我这有个类,一直用
package comseconddao;import javalangreflectInvocationTargetException;
import javalangreflectMethod;
import javasqlConnection;
import javasqlDriverManager;
import javasqlPreparedStatement;
import javasqlResultSet;
import javasqlResultSetMetaData;
import javasqlSQLException;
import javautilArrayList;
import javautilList;
public class JDBCUtilDao {
private static Connection con = null;
private static PreparedStatement ps = null;
private static ResultSet rs = null;
public static Connection PrintCon() {
return con;
}
public static PreparedStatement PrintPs() {
return ps;
}
public static ResultSet PrintRs() {
return rs;
}
/
准备驱动
/
static {
try {
ClassforName("netsourceforgejtdsjdbcDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
Systemoutprintln("加载驱动失败!");
eprintStackTrace();
}
}
public static Connection getConnection() {
try {
con = DriverManagergetConnection(
"jdbc:jtds:sqlserver://1921686110/sql_second", "sa",
"123");
// Systemoutprintln(con);
} catch (SQLException e) {
// TODO Auto-generated catch block
Systemoutprintln("连接失败!");
eprintStackTrace();
}
return con;
}
/
关闭连接
@param rs
结果集对象
@param ps
会话对象
@param con
连接对象
/
public static void closeAll(ResultSet rs, PreparedStatement ps,
Connection con) {
try {
if (null != rs) {
rsclose();
}
if (null != ps) {
psclose();
}
if (null != con) {
conclose();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
/
设置参数
@param params
@param ps
/
public static void setParams(List<String> params, PreparedStatement ps) {
if (params != null) {
for (int i = 0; i < paramssize(); i++) {
try {
pssetString(i + 1, paramsget(i));
} catch (SQLException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
}
}
/
实现增、删、改
@param sql
sql语句
@param params
参数
@return 修改的行数
/
public static int doUpdata(String sql, List<String> params) {
int result = 0;
try {
// 判断是否连接 不连接就把数据库连上
if (null == con || conisClosed()) {
con = getConnection();
}
// 得到会话
ps = conprepareStatement(sql);
// 设置参数
setParams(params, ps);
// 得到结果,即改变行数
result = psexecuteUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
eprintStackTrace();
} finally {
closeAll(null, ps, con);
}
return result;
}
/
查询
@param <T>
@param sql
@param params
@param t
@return
/
public static <T> List<T> qureyAll(String sql, List<String> params,
Class<T> t) {
// 用一个集合接受返回的数据
List<T> list = new ArrayList<T>();
// 判断是否连接
try {
if (null == con || conisClosed()) {
con = getConnection();
}
// *** 作对象
ps = conprepareStatement(sql);
// 设置参数
setParams(params, ps);
// 返回结果集
rs = psexecuteQuery();
// 取出t中的说有方法
Method[] method = tgetDeclaredMethods();
// 取出说有列名和列数
ResultSetMetaData rsmd = rsgetMetaData();
// 获得列数
int count = rsmdgetColumnCount();
// 取出每个列列名放入数组中
String[] columns = new String[count];
for (int i = 0; i < columnslength; i++) {
columns[i] = rsmdgetColumnName(i + 1);
}
// 循环结果集
while (rsnext()) {
T s = (T) tnewInstance();
// 第一个循环控制列数
for (int i = 0; i < columnslength; i++) {
// 第二个循环控制方法名
for (int j = 0; j < methodlength; j++) {
String setName = "set" + columns[i];
if (setNameequalsIgnoreCase(method[j]getName())) {// set+列名相同就是这个类得方法名
String typeName = rsmdgetColumnTypeName(i + 1);// 得到数据库中列名的类型
// int
// varchar
//Systemoutprintln(typeName);
if (typeNameequals("INTEGER")
|| typeNameequals("int identity")
|| typeNameequals("int")) {
method[j]invoke(s, rsgetInt(columns[i]));
} else if (typeNameequals("DECIMAL")) {
method[j]invoke(s, rsgetDouble(columns[i]));
} else if (typeNameequals("VARCHAR2")) {
method[j]invoke(s, rsgetString(columns[i]));
} else if (typeNameequals("money")) {
method[j]invoke(s, rsgetFloat(columns[i]));
} else if (typeNameequals("datetime")) {
// Systemoutprintln(rsgetTimestamp(columns[i]));
method[j]
invoke(s, rsgetTimestamp(columns[i]));
} else {
method[j]invoke(s, rsgetString(columns[i]));
}
}
}
}
listadd(s);
}
closeAll(rs, ps, con);
} catch (SQLException e) {
// TODO Auto-generated catch block
eprintStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
eprintStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
eprintStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
eprintStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
return list;
}
/
查询
@param sql
@param obj
@return
/
public static ResultSet getInfoos(String sql, Object[] temp) {
ResultSet rs = null;
try {
if (con == null || conisClosed()) {
getConnection();
}
ps = conprepareStatement(sql);
for (int i = 1; i < templength; i++) {
pssetObject(i, temp[i]);
}
rs = psexecuteQuery();
} catch (SQLException e) {
eprintStackTrace();
}
return rs;
}
public static void main(String[] args) {
// JDBCUtilDemo jd = new JDBCUtilDemo();
// Systemoutprintln(jdgetConnection());
// if(jdupdateByUserId("8888" )){
// Systemoutprintln("OK");
// }else{
// Systemoutprintln("NO");
// }
}
}
只能写个大概的,要写数据到数据库中,先得在数据库中建库,库里建表,表里建字段,然后java里建立数据库连接,用SQL语言写数据到表中的字段
ClassforName("commicrosoftsqlserverjdbcSQLServerDriver")newInstance();
//String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=数据库名"; //70、2000
String url="jdbc:sqlserver://localhost:1433;DatabaseName=数据库名"; //2005
Connection conn=null;
conn= DriverManagergetConnection(url,用户名,密码);
PreparedStatement pst=null;
pst=connprepareStatement("Insert Into grade(表名) Values ()");
pstsetInt(1,你要写的整弄数据);
//pstsetString(2,你要写的字符串数据);
pstaddBatch();
pstexecuteBatch();
以上就是关于怎么用java向数据库中添加和删除数据全部的内容,包括:怎么用java向数据库中添加和删除数据、用java怎样把数据存到数据库中、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)