使用十六進(jìn)制表示法來指定 LF 行終止符,即:ROWTERMINATOR = '0x0A'。
創(chuàng)新互聯(lián)主營(yíng)范縣網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app軟件開發(fā),范縣h5成都微信小程序搭建,范縣網(wǎng)站營(yíng)銷推廣歡迎范縣等地區(qū)企業(yè)咨詢
至于slq server為什么在CRLF的時(shí)候可以識(shí)別出\r\n,但是換到LF時(shí)只能識(shí)別16進(jìn)制,我也沒搞懂,猜想可能跟文件編碼有關(guān),但是沒有實(shí)際驗(yàn)證。
樓上的同志們,,,java連數(shù)據(jù)庫方式有3種,
你們所說的那種是純java驅(qū)動(dòng)方式,無需配置數(shù)據(jù)源,但是要加特定的驅(qū)動(dòng)包才可以
樓主用的連接方式JDBC-ODBC橋接方式,需要先配置數(shù)據(jù)源(雖然我不建議樓主使用這種方式,不便于移植,換個(gè)環(huán)境就要配置數(shù)據(jù)源先),jdk自帶驅(qū)動(dòng).
連接代碼沒寫錯(cuò)
建議:
1:如果你會(huì)VB的話,可以用VB簡(jiǎn)單測(cè)試一下數(shù)據(jù)源配置是否成功
2:將你的sql打印到控制臺(tái),再復(fù)制到查詢分析器中去執(zhí)行看看 看sql是否拼錯(cuò)
3:記得隨手關(guān)閉連接和結(jié)果集
報(bào)錯(cuò)信息是sql異常 sql拼錯(cuò)的可能性比較大
下面的程序我測(cè)試通過 你把表名和dsn名改成你自己的,再加上密碼就可以運(yùn)行了
import java.sql.*;
public class Access {
public static void main(String args[]) {
Connection con;
Statement sql; // 聲明Statement對(duì)象
ResultSet rs;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException e) {
System.out.println("" + e);
}
try {
con = DriverManager.getConnection("jdbc:odbc:MS Access Database", "", "");
sql = con.createStatement();
rs = sql.executeQuery("Select * FROM Mytable");
while (rs.next()) {
String colum1 = rs.getString(1); // 獲得數(shù)據(jù)庫第一列 System.out.println(colum1);
}
con.close();
} catch (SQLException el) {
System.out.println("" + el);
}
}
}
你可以試以下幾個(gè)方法同時(shí)用,效果會(huì)好些:
1、修改MSSQL的端口號(hào);
2、修改復(fù)雜的SA密碼,如aKLFJD13aaK_1@這一類,黑客就無法爆破了;
3、打開WIN的自帶防火墻,僅開有用的80端口和遠(yuǎn)程桌面(記住遠(yuǎn)程桌面端口也改),別開21端口。
4、關(guān)閉PING功能。
用上面的方法可以大大提高你服務(wù)器的安全,其他的防火墻有一定的作用,但會(huì)占資源。
第一步:從SQLSERVER中導(dǎo)出數(shù)據(jù)
在SQLSERVER數(shù)據(jù)庫上使用Import and Export Data工具
1.在choose a Data source頁
選取:
source= Microsoft OLE DB Porvider for Sql Server
server=local
database=icd_db_bill
{use Sql Server authentication}
user=sa
選擇下一步
2.在choose destination 頁中
選取destination為Text File
file name ="d:\backup\tbilllog1.txt"
選擇下一步
3. 選擇use a query to specify the data to transfer
選擇下一步
注:由于SQLSERVER導(dǎo)出時(shí)會(huì)將table_id作為一個(gè)域?qū)С?,而oracle沒有(oracle 為rowid),所以必須選擇此項(xiàng)為use a query to specify the data to transfer而不是copy table(s) from source database
4.在Query Builder選項(xiàng)進(jìn)入
選取tbilllog1,添加然后將table_id從列表中去掉
一直確認(rèn)直到select Destination File Format頁面
5.選擇
file type =ansi (缺?。?/p>
row={cr}{lf} (缺?。?/p>
column=comma (缺?。?/p>
text= double quote{"} (缺?。?/p>
在comumn和text選項(xiàng)會(huì)影響到oracle的controlfile的設(shè)置
第二步:
oracle方面的設(shè)置
首先將tbilllog1.txt 拷貝到log1.ctl的目錄
提示:如果NT平臺(tái)可以先壓縮再傳送可以節(jié)省時(shí)間,到目的目錄再解開
controlfile example: log1.ctl
LOAD DATA
INITFILE 'tbilllog1.txt'
insert into table tbilllog1
fields terminated by ',' optionally enclosed by '"'
(
callid,
callidnum,
callerno,
calleeno,
waitbegin date "yyyy--mm-dd hh24:mi:ss",
waitend date "yyyy-mm-dd hh24:mi:ss",
ackbegin date "yyyy-mm-dd hh24:mi:ss",
ackend date "yyyy-mm-dd hh24:mi:ss",
...
)
*fields terminated by ','指明域由,分割,對(duì)應(yīng)到上面第5步的column=comma
*optionally enclose by '"'指明字符型數(shù)據(jù)有" "括起來,對(duì)應(yīng)到text=double quote{"}如果選擇text=none 不加此語句。
1、配置ODBC數(shù)據(jù)源。
2、使用SQL函數(shù)進(jìn)行連接。
對(duì)于1、配置數(shù)據(jù)源,配置完以后就可以編程操作數(shù)據(jù)庫了。
對(duì)于2、使用SQL函數(shù)進(jìn)行連接,參考代碼如下:
#includewindows.h
#includesql.h
#includesqlext.h
void main()
{
HENV henv; //環(huán)境句柄
HDBC hdbc; //數(shù)據(jù)源句柄
HSTMT hstmt; //執(zhí)行語句句柄
unsigned char datasource[]="數(shù)據(jù)源名稱"; //即源中設(shè)置的源名稱
unsigned char user[]= "用戶名"; //數(shù)據(jù)庫的帳戶名
unsigned char pwd[]= "密碼"; //數(shù)據(jù)庫的密碼
unsigned char search[]="select xm from stu where xh=0";
SQLRETURN retcode; //記錄各SQL函數(shù)的返回情況
// 分配環(huán)境句柄
retcode= SQLAllocEnv(henv); // 等介于 SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL
, henv);
// 設(shè)置ODBC環(huán)境版本號(hào)為3.0
retcode= SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
// 分配連接句柄
retcode= SQLAllocConnect(henv,hdbc); // 等介于 SQLAllocHandle(SQL_HANDLE_DBC, henv, hdbc);
//設(shè)置連接屬性,登錄超時(shí)為*rgbValue秒(可以沒有)
// SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)(rgbValue), 0);
//直接連接數(shù)據(jù)源
// 如果是windows身份驗(yàn)證,第二、三參數(shù)可以是
,也可以是任何字串
//SQL_NTS 即 "
retcode= SQLConnect(hdbc,datasource, SQL_NTS, user, SQL_NTS , pwd, SQL_NTS );
//分配語句句柄
retcode= SQLAllocStmt(hdbc,hstmt); // 等介于 SQLAllocHandle(SQL_HANDLE_STMT, hdbc, hstmt);
//直接執(zhí)行查詢語句
retcode=SQLExecDirect(hstmt,search,SQL_NTS);
//將數(shù)據(jù)緩沖區(qū)綁定數(shù)據(jù)庫中的相應(yīng)字段(i是查詢結(jié)果集列號(hào),queryData是綁定緩沖區(qū),BUFF_LENGTH是緩沖區(qū)長(zhǎng)度)
SQLBindCol(hstmt, i, SQL_C_CHAR, queryData[i-1], BUFF_LENGTH, 0);
//遍歷結(jié)果集到相應(yīng)緩沖區(qū) queryData
SQLFetch(hstmt);
/*
*對(duì)遍歷結(jié)果的相關(guān)操作,如顯示等
*/
//注意釋放順序,否則會(huì)造成未知錯(cuò)誤!
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
}