JDBC
相比于Statement,PreparedStatement可以动态改变sql语句的参数,所以应用更灵活。代码和上一篇的差不多,不过这里我特意感受了一下MyEclipse的调试功能,感觉还行。
improt ……;
public class Test2 {
//连接本地数据库的两种写法
// private static final String
URL="jdbc:sqlserver://localhost:1433;DatabaseName=TestDB";
//
private static final String
URL="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=TestDB";
private static final String
URL="jdbc:sqlserver://222.26.*.*:1433;DatabaseName=TestDB";
//连接异地数据库,这里用的是寝室另一台电脑的IP
private static final String
USERNAME="sa";
private static final String
PASSWORD="1234";
static{
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//加载JDBC驱动程序
}
catch (ClassNotFoundException e) {
System.out.println("发生如下异常:");
e.printStackTrace();
}
}
public static void main(String[] args)
{
try {
Connection
conn=DriverManager.getConnection(URL,
USERNAME,PASSWORD);//建立数据库连接
PreparedStatement
ps=null;
//insert多条记录*********************************************************************
Object[][]
items={{"Roney2","Tomsy2","1998-02-06",12},{"Kaka","yyu","1998-02-06",12}};
String sql="insert into cchild values(?,?,?,?)";
ps=conn.prepareStatement(sql);
ps.clearBatch();
for(int i=0;i<items.length;i++)
{
ps.setString(1,
""+items[i][0]);//从1开始
ps.setString(2,
items[i][1].toString());
ps.setString(3,
""+items[i][2]);
ps.setInt(4,
Integer.parseInt(""+items[i][3]));
ps.addBatch();
}
ps.executeBatch();
//insert
1个记录*********************************************************************
ps.clearBatch();//最好先清理一下Batch
ps.setString(1,
"test");
ps.setString(2,
"testson");
ps.setString(3,
"1985-06-04");
ps.setInt(4,
25);
ps.execute();//也可以ps.executeUpdate();
//修改一条记录*********************************************************************
String sql2="update cchild set age=? where birthday=?";
ps=conn.prepareStatement(sql2);
ps.setInt(1,
14);
ps.setString(2, "1998-02-06");
ps.executeUpdate();
//修改多条记录*********************************************************************
Object[][] itemss={{1,"Sun"},{2,"Li"}};
String sql3="update
cchild set age=age+? where cusername=?";
ps=conn.prepareStatement(sql3);
ps.clearBatch();
for(int i=0;i<itemss.length;i++)
{
ps.setInt(1,
Integer.parseInt(""+itemss[i][0]));
ps.setString(2, ""+itemss[i][1]);
ps.addBatch();
}
ps.executeBatch();
//删除记录*********************************************************************
String sql4="delete from cchild where cusername=?";
ps=conn.prepareStatement(sql4);
ps.setString(1,
"Kaka");
ps.executeUpdate();
//查询记录*********************************************************************
String sql5="select * from cchild where cusername=?";
ps=conn.prepareStatement(sql5);
ps.setString(1,
"Zhang");
ResultSet
rs=ps.executeQuery();//注意这里有错
ResultSetMetaData
rsmd=rs.getMetaData();//这里能够得到 返回数据表的详细信息 ,列标号也是从1开始
System.out.println(rsmd.getColumnName(1)+" "+rsmd.getColumnName(2)+"
"+
rsmd.getColumnName(3)+" "+rsmd.getColumnName(4));//得到各列的列名
while
(rs.next()) {
String
cusername=rs.getString(1);//从1开始的
String
childname=rs.getString(2);
String
birthdaty=rs.getString(3);
int
age=rs.getInt(4);
System.out.println(cusername+"
"+childname+" "+birthdaty+" "+age);
}
ps.close();//关闭statement
conn.close();//关闭数据库连接
System.out.println("success***********");
} catch (SQLException e)
{
System.out.println("产生异常");
e.printStackTrace();
}
}
}
调试过程:将光标移到想设置断点的某一行,快捷键Ctrl+Shift+B,或者工具栏Run->Toggle
BreakPoint,这样就可以为某一行加上断点了,这里我在每一个操作之间都加上了断点。然后再左侧的
Package Explorer中找到那个Test2.java文件,右键Debug As->Java Application, 然后MyEclipse会自动切换到Debug视图,程序会在遇到的第一个断点处停住,此时可以点击上面Resume按钮(快捷键
F8)程序会继续执行到下一个断点处,或者此时按Step Over按钮(快捷键F6),单步执行,不会进入某一个具体函数。如果此时按Step Into( 快捷键F5)则是会进入某一个函数。
按照上面的调试过程,最后这个程序一切正常,哈哈……
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。