javaoop---jdbc 入门级别

来源:互联网 发布:核盾网络验证源码 编辑:程序博客网 时间:2024/04/25 02:58

1. 连接整个 数据库 的顺序 就是:

  ----   加载 驱动类------------创建连接对象  ----------传送 sql语句   ----------处理结果-------

反射 里面的 功能(导入一个 jar包先)     DriverManage类 有 一个 创建对象的 方法      String sql="insert into goods values('爽歪歪','瓶',2.5,100)";

  class.forName(                                  Connection sqlcon=DriverM.getCon(a,ab,bc);  Statement stm=sqlcon.createStatement();   

com.mic......SqlserverDriver);             需要 提供的 是 数据库的名字 ,账号,密码   int iline = stm.executeUpdate(sql);       普通的 插入,直接执行之后 返回一个 改变行数

                                                                String url="jdbc:sqlserver://localhost:1433;        

                                                                                                DataBaseName=XT003";      
                                               String user="sa";                                                      
                                                               String password="123456";

   1.如果 你需要 执行之后的 是一个 结果集

String sql="select * from goods";//编写查询sql语句
Statement stm=sqlcon.createStatement();
//第四步:执行查询语句并返回查询的结果集
ResultSet rst = stm.executeQuery(sql);
while(rst.next()){
int id = rst.getInt("id");
String gname=rst.getString("gname");
String gunit=rst.getString("gunit");
double gprice= rst.getDouble("gprice");
int icount=rst.getInt("icount");

System.out.println("编号:"+id+";名称:"+gname+";单位:"+gunit+";单价:"+gprice+";库存:"+icount);
}

                                                                                                3.  如果 说 : 你想 输入 变量 到  sql 语句,就需要用到  

                      3.1  String sql="insert into goods values(?,?,?,?)";
             Connection sqlcon=DriverManager.getConnection(url, user, password);
                PreparedStatement pst = sqlcon.prepareStatement(sql);
             // 一个一个赋值 
             p st.setString(1, "爽歪歪");
                 pst.setString(2, "桶");
                pst.setDouble(3, 2.5);
                  pst.setInt(4, 100);
这个 不是查询的 结果集,于是 返回一个行数    int iline = pst.executeUpdate();
 如果 是返回的 结果集 ,那么 还是 一样的

                                                              pst=sql.prepSta(sql语句);

                                                              Result  rst=   pst.executeQuery();

                                                              while(rst.next()){

                                                               你就直接写 数据库中  哪一行的 名字就行

                                                            rst.getObject("myName");

                                                                  }

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

但是 在实际中 ,由于 经常的使用到 这几个方法,所以  我们会打包 号, 直接调用代码如下


public class DBManager {                                     这一个 是数据库的 名字

private String url="jdbc:sqlserver://localhost:1433;DataBaseName=XT004";
private String user="sa";
private String password="123456";

private Connection sqlcon=null;
private PreparedStatement pst=null;

/**
* 获取链接对象
* @return
* @throws SQLException
*/
private Connection GetConnection() throws SQLException{
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}

return DriverManager.getConnection(url, user, password);
}


/**
* 执行insert,update,delete SQL语句
* @param sql
* @param objs
* @return
* @throws SQLException
*/
public int MyExecuteUpdate(String sql,Object ...objs) throws SQLException{
sqlcon=GetConnection();
pst=sqlcon.prepareStatement(sql);
if(objs!=null){
if(objs.length>0){
int idx=1;
for(Object obj : objs){
pst.setObject(idx, obj);
idx++;
}

}
}

int iline = pst.executeUpdate();

if(pst!=null){
pst.close();
}
if(sqlcon!=null){
sqlcon.close();
}
return iline;
}


public ResultSet GetResultSet(String sql,Object ...objs) throws SQLException{
sqlcon=GetConnection();
pst=sqlcon.prepareStatement(sql);
if(objs!=null){
if(objs.length>0){
int idx=1;
for(Object obj : objs){
pst.setObject(idx, obj);
idx++;
}

}
}

ResultSet rst = pst.executeQuery();

return rst;
}

/**
* 关闭数据库所有连接对象释放数据库连接资源
* @throws SQLException
*/
public void CloseAll() throws SQLException{
if(pst!=null){
pst.close();
}
if(sqlcon!=null){
sqlcon.close();
}
}

/**
* 执行多条sql语句 使用事务处理
* @param sqlList
* @param objsList
* @return
*/
public int MyTransaction(List<String> sqlList,List<Object[]> objsList){
int iline=-1;
try{
sqlcon=GetConnection();//获取链接对象
sqlcon.setAutoCommit(false);//取消事务的自动提交功能
if(sqlList.size()>0){
for(int i=0;i<sqlList.size();i++){
String sql=sqlList.get(i);//获取要执行的sql语句
Object [] objs=objsList.get(i);//获取要执行的sql语句的参数

pst=sqlcon.prepareStatement(sql);//创建pst对象
if(objs!=null){//为sql语句的参数赋值
if(objs.length>0){
int idx=1;
for(Object obj : objs){
pst.setObject(idx, obj);
idx++;
}

}
}
pst.execute();//执行sql语句
}
}
iline=1;
sqlcon.commit();//如果sql语句执行成功,则提交事务
}catch(SQLException e){
if(sqlcon!=null){
try {
sqlcon.rollback();//如果sql语句执行失败,则回滚事务
} catch (SQLException e1) {
e1.printStackTrace();
}
}
e.printStackTrace();
}finally{
try{
if(pst!=null){
pst.close();
}
if(sqlcon!=null){
sqlcon.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}

return iline;
}





}








0 0
原创粉丝点击