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')