数据库平时错误和使用经验的总结
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')?
?
?
?
總結
以上是生活随笔為你收集整理的数据库平时错误和使用经验的总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ajax常见错误和使用总结
- 下一篇: java Ant build.xml