使用十六进制表示法来指定 LF 行终止符,即:ROWTERMINATOR = '0x0A'。
创新互联主营范县网站建设的网络公司,主营网站建设方案,成都app软件开发,范县h5成都微信小程序搭建,范县网站营销推广欢迎范县等地区企业咨询
至于slq server为什么在CRLF的时候可以识别出\r\n,但是换到LF时只能识别16进制,我也没搞懂,猜想可能跟文件编码有关,但是没有实际验证。
楼上的同志们,,,java连数据库方式有3种,
你们所说的那种是纯java驱动方式,无需配置数据源,但是要加特定的驱动包才可以
楼主用的连接方式JDBC-ODBC桥接方式,需要先配置数据源(虽然我不建议楼主使用这种方式,不便于移植,换个环境就要配置数据源先),jdk自带驱动.
连接代码没写错
建议:
1:如果你会VB的话,可以用VB简单测试一下数据源配置是否成功
2:将你的sql打印到控制台,再复制到查询分析器中去执行看看 看sql是否拼错
3:记得随手关闭连接和结果集
报错信息是sql异常 sql拼错的可能性比较大
下面的程序我测试通过 你把表名和dsn名改成你自己的,再加上密码就可以运行了
import java.sql.*;
public class Access {
public static void main(String args[]) {
Connection con;
Statement sql; // 声明Statement对象
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); // 获得数据库第一列 System.out.println(colum1);
}
con.close();
} catch (SQLException el) {
System.out.println("" + el);
}
}
}
你可以试以下几个方法同时用,效果会好些:
1、修改MSSQL的端口号;
2、修改复杂的SA密码,如aKLFJD13aaK_1@这一类,黑客就无法爆破了;
3、打开WIN的自带防火墙,仅开有用的80端口和远程桌面(记住远程桌面端口也改),别开21端口。
4、关闭PING功能。
用上面的方法可以大大提高你服务器的安全,其他的防火墙有一定的作用,但会占资源。
第一步:从SQLSERVER中导出数据
在SQLSERVER数据库上使用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导出时会将table_id作为一个域导出,而oracle没有(oracle 为rowid),所以必须选择此项为use a query to specify the data to transfer而不是copy table(s) from source database
4.在Query Builder选项进入
选取tbilllog1,添加然后将table_id从列表中去掉
一直确认直到select Destination File Format页面
5.选择
file type =ansi (缺省)
row={cr}{lf} (缺省)
column=comma (缺省)
text= double quote{"} (缺省)
在comumn和text选项会影响到oracle的controlfile的设置
第二步:
oracle方面的设置
首先将tbilllog1.txt 拷贝到log1.ctl的目录
提示:如果NT平台可以先压缩再传送可以节省时间,到目的目录再解开
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 ','指明域由,分割,对应到上面第5步的column=comma
*optionally enclose by '"'指明字符型数据有" "括起来,对应到text=double quote{"}如果选择text=none 不加此语句。
1、配置ODBC数据源。
2、使用SQL函数进行连接。
对于1、配置数据源,配置完以后就可以编程操作数据库了。
对于2、使用SQL函数进行连接,参考代码如下:
#includewindows.h
#includesql.h
#includesqlext.h
void main()
{
HENV henv; //环境句柄
HDBC hdbc; //数据源句柄
HSTMT hstmt; //执行语句句柄
unsigned char datasource[]="数据源名称"; //即源中设置的源名称
unsigned char user[]= "用户名"; //数据库的帐户名
unsigned char pwd[]= "密码"; //数据库的密码
unsigned char search[]="select xm from stu where xh=0";
SQLRETURN retcode; //记录各SQL函数的返回情况
// 分配环境句柄
retcode= SQLAllocEnv(henv); // 等介于 SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL
, henv);
// 设置ODBC环境版本号为3.0
retcode= SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
// 分配连接句柄
retcode= SQLAllocConnect(henv,hdbc); // 等介于 SQLAllocHandle(SQL_HANDLE_DBC, henv, hdbc);
//设置连接属性,登录超时为*rgbValue秒(可以没有)
// SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)(rgbValue), 0);
//直接连接数据源
// 如果是windows身份验证,第二、三参数可以是
,也可以是任何字串
//SQL_NTS 即 "
retcode= SQLConnect(hdbc,datasource, SQL_NTS, user, SQL_NTS , pwd, SQL_NTS );
//分配语句句柄
retcode= SQLAllocStmt(hdbc,hstmt); // 等介于 SQLAllocHandle(SQL_HANDLE_STMT, hdbc, hstmt);
//直接执行查询语句
retcode=SQLExecDirect(hstmt,search,SQL_NTS);
//将数据缓冲区绑定数据库中的相应字段(i是查询结果集列号,queryData是绑定缓冲区,BUFF_LENGTH是缓冲区长度)
SQLBindCol(hstmt, i, SQL_C_CHAR, queryData[i-1], BUFF_LENGTH, 0);
//遍历结果集到相应缓冲区 queryData
SQLFetch(hstmt);
/*
*对遍历结果的相关操作,如显示等
*/
//注意释放顺序,否则会造成未知错误!
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
}