推 hate9527:Try catch看錯誤訊息拉。 04/01 11:08
→ hate9527:不管怎麼樣 main throw exception 是不好的習慣! 04/01 11:09
→ Chansamo:hate9572已使用Try catch程式碼,但依然沒有出現錯誤訊息 04/01 11:42
*[1;31m→ *[33mChansamo*[m*[33m:但已附Try catch程式碼如下
package JDBCFirstConect;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class ConnecterJDBC {
public final static String DBDriver
="com.microsoft.sqlserver.jdbc.SQLServerDriver";
public final static String connectionUrl =
"jdbc:sqlserver://localhost:1433;" +
"databaseName=Test;user=sa;password=iemyuanmj;";
public static void main(String[] args) throws Exception {
try{
System.out.println("1");
Connection conn= null;
Statement stmt=null;
System.out.println("2");
Class.forName(DBDriver);
System.out.println("3");
conn= DriverManager.getConnection(connectionUrl);
System.out.println("4");
stmt=conn.createStatement();
System.out.println("5");
stmt.executeUpdate("use Test");
System.out.println("6");
stmt.executeUpdate("INSERT INTO person(pie,name,age,birthday,s
alary) VALUEs (1,'老王',18,'2004-03-01',9000)");
System.out.print(conn);
conn.close();
}
catch(SQLException e){
e.toString();
System.out.print("連結失敗");
}
}
};
※ 編輯: Chansamo 來自: 118.169.180.73 (04/01 11:45)
※ 編輯: Chansamo 來自: 118.169.180.73 (04/01 11:46)
→ iFEELing:commit ? block & wait ? 04/01 12:50
感謝您的回應,這部分小弟真的不太理解要怎麼修改,還期盼您能詳細解說。
→ ashin10:可以研究一下try catch的用法... 04/01 12:58
推 hate9527:我不覺得"連結失敗"會比printstacktrace來的清楚(笑 04/01 13:12
這部分小弟有做過修改,不過依然沒有錯誤訊息出現....還是以無限迴圈的方式繼續跑...
目前小弟已經將連接方式做初步的修改如下
package JDBCFirstConect;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
public class ConnecterJDBC {
public final static String DBDriver
="com.microsoft.sqlserver.jdbc.SQLServerDriver";
public final static String connectionUrl =
"jdbc:sqlserver://localhost:1433;" +
"databaseName=Test;user=sa;password=iemyuanmj;";
public static void main(String[] args) throws Exception {
System.out.println("1");
Connection conn= null;
PreparedStatement pstmt=null;
System.out.println("2");
Class.forName(DBDriver);
System.out.println("3");
conn= DriverManager.getConnection(connectionUrl);
System.out.println("4");
pstmt=conn.prepareStatement("INSERT INTO
person(pie,name,age,birthday,salary) VALUEs (?,?,?,?,?)");
try{
pstmt.setInt(1, 1);
pstmt.setString(2, "name");
pstmt.setInt(3, 12);
pstmt.setString(4, "2009-1-1");
pstmt.setInt(5, 12);
System.out.println("5");
System.out.println("6");
pstmt.executeUpdate();
System.out.print(conn);
pstmt.close();
conn.close();
}
catch(SQLException e){
e.toString();
System.out.print(e);
pstmt.close();
conn.close();
}
catch (Exception ex) {
pstmt.close();
conn.close();
ex.printStackTrace();
}
}
};
雖執行結果上看來是已經執行成功
2
3
4
5
6
ConnectionID:1 ClientConnectionId: 682acbf2-c7ec-4b27-b742-f97760016d5
但到資料庫中Test下的person資料表中查詢,
資料卻沒有匯入,
小弟現在在懷疑的是,
是否在利用java連結資料庫時,必須要先指定這次要用的是mssql中的哪一個資料庫,
後續才能開始選擇要在哪個表單中新增資料?
(由於從MSSQL2008中的"新增查詢"中是要先指定才能新增資料)
但小弟在上網查詢過後,
依然找不到相關說要先指定資料庫才能創建或修改資料表的相關資訊,
連我原本已經先在裡面建立的一些資料,想先嘗試讀取也是失敗(程式碼如下)
package JDBCSecondConnect;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCThridQueue {
public final static String DBDriver
="com.microsoft.sqlserver.jdbc.SQLServerDriver";
public final static String connectionUrl =
"jdbc:sqlserver://localhost:1433;" +
"databaseName=Test;user=sa;password=iemyuanmj;";
public static void main(String[] args) throws Exception {
ResultSet result = null;
try{
System.out.println("1");
Connection conn= null;
PreparedStatement pstmt=null;
System.out.println("2");
Class.forName(DBDriver);
System.out.println("3");
conn= DriverManager.getConnection(connectionUrl);
System.out.println("4");
pstmt=conn.prepareStatement("select pie,name,age,birthday
,salary from person");
pstmt.setInt(1, 1);
pstmt.setString(2, "name");
pstmt.setInt(3, 12);
pstmt.setString(4, "2009-1-1");
pstmt.setInt(5, 12);
System.out.println("5");
System.out.println("6");
result=pstmt.executeQuery();
while (result.next()){
int pie = result.getInt(1);
String name = result.getString(2);
int age = result.getInt(3);
String birthday = result.getString(4);
int salary = result.getInt(5);
System.out.println(pie);
}
System.out.print(conn);
result.close();
pstmt.close();
conn.close();
}
catch(SQLException e){
e.toString();
System.out.print(e);
}
}
};
但在這部分,
他就會指出說,他找不到我person資料表,
並顯失錯誤訊息如下
1
2
3
4
com.microsoft.sqlserver.jdbc.SQLServerException: 索引 1 超出範圍。
com.microsoft.sqlserver.jdbc.SQLServerException: 索引 1 超出範圍。
at
com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError
(SQLServerException.java:190)
at
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setterGetParam(
SQLServerPreparedStatement.java:714)
at
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setValue(
SQLServerPreparedStatement.java:723)
at
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setInt(
SQLServerPreparedStatement.java:884)
at JDBCSecondConnect.JDBCThridQueue.main(JDBCThridQueue.java:29)
還請各位大大協助,
謝謝
※ 編輯: Chansamo 來自: 116.59.232.211 (04/01 14:52)
推 hate9527:Select 沒有parameter 把他註解掉吧 04/01 19:45
"select pie,name,age,birthday,salary from person"
請問是指中間pie-salary的參數嗎?
因為刪去後或改成*結果皆相同,
不知是哪裡要進行修改。
推 hate9527:Insert沒成功 查一下autocommit與 executeupdate的回傳值 04/01 19:50
若今日使用System.out.print(autocommit());則顯示
java.lang.NullPointerException
at java.io.Writer.write(Unknown Source)
at java.io.PrintStream.write(Unknown Source)
at java.io.PrintStream.print(Unknown Source)
at java.io.PrintStream.println(Unknown Source)
at JDBCFirstConect.ConnecterJDBC.main(ConnecterJDBC.java:40)
若今日使用System.out.print(ptmt.executeupdate());則顯示
-1
錯誤代碼那邊也會顯示三種狀況
1.Software caused connection abort: recv failed
2.com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset
3.SQL Server 未傳回回應。已關閉連接。
上網查也查不到相關對應的解決方法,還請各位賜教。
※ 編輯: Chansamo 來自: 221.120.4.249 (04/01 22:58)
推 hate9527:Connection 測一下,isclose()的值. 04/02 00:37
推 hate9527:Paramater指preparestatment 寫code先看方法怎用吧~_~ 04/02 00:40
推 swpoker:你要再看一下文件或參考書有關SQL的用法~ 04/02 09:20
→ IamTD:preparestatement的用法錯了 去查一下吧 04/02 10:14
推 risker760915:個人建議你先找個可以run的範例再改成自己要的... 04/02 13:53