数据库平时错误和使用经验的总结

83 阅读3分钟

jdbc里面的操作

 jdbc,使用PreparedStatement
view sourceprint?001 package com.iflytek.test;  


002    


003 import java.sql.Connection;  


004 import java.sql.DriverManager;  


005 import java.sql.PreparedStatement;  


006 import java.sql.ResultSet;  


007 import java.sql.ResultSetMetaData;  


008 import java.sql.SQLException;  


009 import java.util.ArrayList;  


010 import java.util.HashMap;  


011 import java.util.List;  


012 import java.util.Map;  


013    


014 public class ConnectionDB2 {  


015    


016     /**  


017      * 驱动包  


018      */ 


019     private static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";  


020        


021     /**  


022      * 数据库地址  


023      */ 


024     private final String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=Test";  


025        


026     /**  


027      * 用户名  


028      */ 


029     private final String USER = "sa";  


030        


031     /**  


032      * 密码  


033      */ 


034     private final String PASSWORD = "0";  


035        


036     /**  


037      * 数据库连接  


038      */ 


039     Connection conn;  


040        


041     /**  


042      * SQL命令  


043      */ 


044     PreparedStatement pst;  


045        


046     /**  


047      * 结果集  


048      */ 


049     ResultSet rs;  


050        


051        


052     /**  


053      * 加载数据库驱动  


054      */ 


055     static{  


056         try {  


057             //加载驱动  


058             Class.forName(DRIVER);  


059         } catch (Exception e) {  


060             e.printStackTrace();  


061             System.out.println("加载驱动失败");  


062         }  


063     }  


064        


065        


066     /**  


067      * 取得和数据库的连接  


068      * @return Connection  


069      */ 


070     private Connection getConnection() {  


071         try {  


072             conn = DriverManager.getConnection(URL, USER, PASSWORD);  


073         } catch (Exception e) {  


074             e.printStackTrace();  


075             System.out.println("连接数据库失败");  


076         }  


077         return conn;  


078     }  


079        


080        


081     /**  


082      * 查询数据库  


083      * @param sql SQL语句  


084      * @param arrays 参数数组  


085      * @return 参数列表  


086      */ 


087     public List getDataBySql(String sql,Object arrays[]) {  


088            


089         List list = new ArrayList();  


090            


091         try {  


092             //取得连接  


093             conn = this.getConnection();  


094                


095             if(conn == null) {  


096                 return list;  


097             }  


098                


099             //用sql语句对数据库进行操作  


100             pst  =conn.prepareStatement(sql);  


101                


102             //设置参数  


103             for (int i = 0; i < arrays.length; i++) {  


104                 pst.setObject(i+1, arrays[i]);  


105             }  


106                


107             //将查询结果放入结果集rs中  


108             rs = pst.executeQuery();  


109                


110             //遍历rs,并将rs的内容放入List中  


111             while(rs.next()) {  


112                    


113                 // 获取包含有关 ResultSet 对象列信息的 ResultSetMetaData 对象  


114                 ResultSetMetaData rm = pst.getMetaData();  


115                    


116                 Map map = new HashMap();  


117                    


118                 for (int i = 1; i <=rm.getColumnCount(); i++) {  


119                     //往map里放入列名和对应的值  


120                     map.put(rm.getColumnName(i), rs.getObject(i));  


121                 }  


122                 //将map放入list中  


123                 list.add(map);  


124             }  


125         } catch (Exception e) {  


126             e.printStackTrace();  


127         } finally {  


128             close();  


129         }  


130         return list;  


131     }  


132        


133        


134     /**  


135      * 插入、删除、更新操作  


136      * @param sql SQL语句  


137      * @param arrays 参数数组  


138      * @return 影响的行数  


139      */ 


140     public int updateBySql(String sql,Object arrays[]) {  


141            


142         List list = new ArrayList();  


143            


144         //初始化影响的行数  


145         int line = 0;  


146         try {  


147             conn = this.getConnection();  


148                


149             if(conn == null) {  


150                 return 0;  


151             }  


152                


153             pst  =conn.prepareStatement(sql);  


154                


155             //设置参数  


156             for (int i = 0; i < arrays.length; i++) {  


157                 pst.setObject(i+1, arrays[i]);  


158             }  


159                


160             //操作数据库,返回行数  


161             line = pst.executeUpdate();  


162                


163         } catch (SQLException e) {  


164             e.printStackTrace();  


165         } finally {  


166             close();  


167         }  


168         return line;  


169     }  


170        


171        


172        


173     /**  


174      * 关闭数据库连接  


175      */ 


176     public void close() {  


177         try {  


178             if(rs != null){  


179                 rs.close();  


180             }  


181                


182             if(pst != null){  


183                 pst.close();  


184             }  


185                


186             if(conn != null){  


187                 conn.close();  


188             }  


189         } catch (Exception e) {  


190             e.printStackTrace();  


191             System.out.println("关闭连接出错");  


192             System.exit(0);  


193         }  


194     }  


195        


196 }  


197    


198    


199    


200    


201 package com.iflytek.test;  


202    


203 import java.util.*;  


204    


205 public class TestConnectionDB2 {  


206    


207     /**  


208      * 测试ConnectionDB2类  


209      * @param args  


210      */ 


211     public static void main(String[] args) {  


212            


213         TestConnectionDB2 Testdb2 = new TestConnectionDB2();  


214            


215         /**  


216          * 查询操作  


217          */ 


218         Testdb2.select();  


219            


220         /**  


221          * 增、删、改操作  


222          */ 


223         Testdb2.update();  


224    


225     }  


226        


227        


228     public void select() {  


229         //创建一个ConnectionDB2的对象  


230         ConnectionDB2 db2 = new ConnectionDB2();  


231            


232         //写一条SQL语句  


233         String sql = "select id,name,address from Student where id=?";  


234            


235         //创建一个和SQL语句匹配的参数数组  


236         Object[] arrays = {5};  


237            


238         //调用db2的“查询数据库”方法,返回List  


239         List list = db2.getDataBySql(sql, arrays);  


240    


241         //遍历list,并打印出结果  


242         for (Object object : list) {  


243             //list里放的是Map  


244             Map map = (Map) object;  


245                


246             Iterator it = map.keySet().iterator();  


247                


248             while(it.hasNext()) {  


249                 //要查询的字段名(列名)  


250                 String key = (String) it.next();  


251                    


252                 //该列对应的值  


253                 Object value = map.get(key);  


254                    


255                 System.out.print("column:"+key+"  value:"+value);  


256                 System.out.println();  


257             }  


258         }  


259     }  


260        


261        


262     public void update() {  


263         //创建一个ConnectionDB2的对象  


264         ConnectionDB2 db2 = new ConnectionDB2();  


265            


266         //写一条SQL语句  


267         String sql = "insert into People values(?,?,?)";  


268            


269         //创建一个和SQL语句匹配的参数数组  


270         Object arrays[] = {7,"毛泽东",78};  


271            


272         //调用db2的“更新数据库”方法,返回影响的行数  


273         int line = db2.updateBySql(sql, arrays);  


274            


275         //line大于0则更新成功  


276         if(line > 0){  


277             System.out.println("更新成功");  


278         } else {  


279             System.out.println("更新失败");  


280         }  


281     }  


282    


283 } 

 

 

mysql使用经验 

 

1.比如分页
select * from table limit 6
和select * from table limit 0,6  等价


select * from table limit 5,10;
一般前面的5放的是 漂移 后面的10放的是 一页多少行
拿到数据库 table里面的数据是 第6条到15条 


42.121.56.21

 

sqlserver里面序列的用法

 

/****** Script for SelectTopNRows command from SSMS  ******/
SELECT TOP 1000 [id]
,[username]
,[password]
,[telephone]
FROM [MyWeb].[dbo].[adminusers]
/****** Script for SelectTopNRows command from SSMS  ******/
SELECT TOP 1000 [id]
,[username]
,[password]
,[telephone]
FROM [MyWeb].[dbo].[adminusers]
create squences a;
USE MyWeb ;
create sequence userid;


USE AdventureWorks2012
insert  ibto [MyWeb].[dbo].[adminusers] values(NEXT VALUE FOR userid,'chenyu','123','13212617498');


CREATE SCHEMA Test1;
CREATE SEQUENCE Test1.CountBy2
START WITH 1
INCREMENT BY 1 ;
GO
SELECT NEXT VALUE FOR Test1.CountBy2 AS FirstUse;
SELECT NEXT VALUE FOR Test.CountBy1 AS SecondUse;
INSERT [MyWeb].[dbo].[adminusers](id,username,password,telephone)
VALUES (NEXT VALUE FOR Test.CountBy1,'chenxuan','123','13212617498') ;
commit;


INSERT [MyWeb].[dbo].[adminusers] (id,username,password,telephone)VALUES (NEXT VALUE FOR Test1.CountBy2,'biyu','123','123456789')