重发自己的文章到底算转载还是原创……
今天早晨起来写代码,才短短一个读库竟然花了两个多小时时间。找块豆腐撞死算了。
很多东西都忘了,几乎写一点百度一点。怎么可能快呢。
把今天百度到的、学到的东西记录一下:
1 写完了代码,在测试的时候,发现数据库出问题了,怎么也删不掉冗余的数据,无论是修改还是删除这一条数据,都报“已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行.”错误,可是这个表里明明没有数据!三个行里所有的字段都是null!也是醉
后来上网搜,发现是没有设置主键的问题。这个表实在折腾不明白了, 只好删掉后重新建了一个,设置好主键,没事了。
(缺少主键是从这里看到的:http://blog.163.com/budong_weimin_zh/blog/static/129198524201093102921956/)
2 这个问题改好了。然后死活插不进去数据,也不报错。但不管怎么运行,数据库里都是空的。
然后我发现,不应该是update,应该是insert……因为目前数据库里没有与这条数据匹配的数据,这是一条新数据……
_(:з」∠)_
update的写法:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson'
insert写法:
INSERT INTO 表名称 VALUES (值1, 值2,....)
或:
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
NSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')
例子来自:http://www.w3school.com.cn/sql/sql_insert.asp
搞清楚这个,就可以顺利地写入啦
3 写库代码模板:
//连库
String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=XXX;user=sa;password=sa";//sa身份连接
// Declare the JDBC objects.
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
// Establish the connection.
System.out.println("begin.");
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(url);
System.out.println("end.");
String SQL="SELECT XXXX";
stmt = con.createStatement();
rs = stmt.executeQuery(SQL);
while(rs.next()){
………………
如果是insert update delete,就用 rs = stmt.executeQuery(SQL2);
另外,rs.next()的返回结果是一个Boolean类型。必须要先执行以下这条语句,然后再开始处理数据。不然指针初始是指向结果集的上一行的。
4 昨天从网上找到了一个比较时间先后的好方法:因为时间都是格式化的,比如2016/02/20 21:03:49,只要把其中的/:和空格都去掉,就变成了20160220210349,然后把它当做一个long整型的数值相互比较就可以了,非常方便。