有測(cè)試框架。mock可以模擬測(cè)試而不對(duì)數(shù)據(jù)庫(kù)操作省去還原數(shù)據(jù)庫(kù)的麻煩?;蛘咧苯泳帉慾unit測(cè)試操作數(shù)據(jù)庫(kù)。但是這樣要在操作后還原數(shù)據(jù)庫(kù)。
柳河網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,柳河網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為柳河超過(guò)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的柳河做網(wǎng)站的公司定做!
StringBuffer
sqlq=new
StringBuffer("
SELECT
*
FROM
")
;//申明一個(gè)可變字符串
,要存了一個(gè)sql語(yǔ)句,并且由"
SELECT
*
FROM
"可知其為一個(gè)select查詢語(yǔ)句
sqlq.append(DtoMapGroupOptions.DB_TABLE_NAME)
;//DtoMapGroupOptions.DB_TABLE_NAME應(yīng)該是一個(gè)字符串,字面值為一個(gè)表的名稱,要在這個(gè)表里查數(shù)據(jù)
sqlq.append("
ORDER
BY
")
;//這個(gè)制定查出來(lái)的結(jié)果集需要排序
sqlq.append(DtoMapGroupOptions.COLUMN_optionID)
;//DtoMapGroupOptions.COLUMN_optionID應(yīng)該是某一列的列名,根據(jù)這一列來(lái)排序,如果這一列是數(shù)字,那么就會(huì)根據(jù)數(shù)字大小排,字符串可能按abc排,和excel排序時(shí)一樣的,即根據(jù)某一列來(lái)擴(kuò)展至整個(gè)區(qū)域排序
sqlq.append("
DESC
")
;//這個(gè)事制定按降序還是升序,這里是降序
//后面的語(yǔ)句要看上下文,那個(gè)pb不知是什么
ListRow
list
=
null
;
pb.isRequireTotalRow(true);
String
sqlStr=sqlq.toString();
list
=
pb.getInfo(sqlStr,
null,
DtoMapGroupOptions.DATA_SOURCE_ID);//可能是把結(jié)果集放入list中,根據(jù)sqlStr中的sql語(yǔ)句
你這段程序錯(cuò)誤太多了
1)
public class test() throws SQLException
test是類,不是方法,不要用(),不能拋出異常
改為
public class test
2)sql ="select name,password from operator;";
sql變量沒(méi)有聲明,改為
String sql ="select name,password from operator;";
3) main方法是靜態(tài)方法,里面不能使用conn等非靜態(tài)變量。
改為新定義一個(gè)方法,
然后再main中創(chuàng)建一個(gè)test對(duì)象,在調(diào)用該方法
4)因?yàn)槌薙QLException,語(yǔ)句Class.forName(driver);還會(huì)拋出其它異常,所以在方法直接使用catch處理所有的異常。
修改后
import java.sql.*;
public class test
{
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String driver ="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String url ="jdbc:microsoft.sqlserver://localhost:1433;DatabaseName=Restaurant";
String user ="user";
String pwd ="user";
String sql ="select name,password from operator;";
public void doTest() {
try{
Class.forName(driver);
System.out.println("加載驅(qū)動(dòng)成功!");
conn = DriverManager.getConnection(url,user,pwd);
System.out.println("連接數(shù)據(jù)庫(kù)成功!");
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next())
{
System.out.println("------記錄-------");
System.out.println("姓 名: "+rs.getString("name"));
System.out.println("密 碼: "+rs.getString("password"));
}
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String [] args)
{
new test().doTest();
}
}
首先創(chuàng)建一個(gè)連接工廠import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;public class ConnectionFactory {
private Connection conn=null;
private Statement stmt=null;
private ResultSet rs=null;
public ConnectionFactory() {
super();
// TODO Auto-generated constructor stub
} public void OpenConn() throws Exception{
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url="jdbc:mysql://127.0.0.1:3306/guestbook";
String user="root";
String password="root";
conn=DriverManager.getConnection(url,user,password);
}catch(Exception e){
System.out.println("創(chuàng)建鏈接拋出異常為:"+e.getMessage());
}
} public ResultSet executeQuery(String sql) throws Exception{
try{
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs=stmt.executeQuery(sql);
}catch(Exception e){
System.out.println("執(zhí)行查詢拋出的異常為:"+e.getMessage());
}
return rs;
} public void close() throws Exception{
try{
rs.close();
stmt.close();
conn.close();
}catch(Exception e){
System.out.println("關(guān)閉對(duì)象拋出的異常:"+e.getMessage());
}
} }
測(cè)試類 import java.sql.ResultSet;public class TestJDBC {
public static void main(String[] args) {
ConnectionFactory c= new ConnectionFactory();
try {
c.OpenConn();
String sql="select * from tb_guestbook";
ResultSet rs=c.executeQuery(sql);
while(rs.next()){
System.out.println(rs.getString(2));
}
c.close();
System.out.println();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}