JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » JDBC/SQL討論區 » Microsoft SQL Server  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
作者 資料庫更新及查詢問題
joe52213





發文: 3
積分: 0
於 2012-04-02 00:52 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
小弟現在剛入門JAVA,若問題太過粗淺還請見諒,

小弟最近在進行資料庫連結時,

想利用程式碼去資料庫新增資料,

但只要執行到executeUpdate時,

程式似乎就會陷入無窮迴圈無法跳出,

也沒有出現任何錯誤訊息,

還請各位大大賜教,

程式碼如下

package JDBCSecondConnect;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCstetment {
public final static String DBDriver
="com.microsoft.sqlserver.jdbc.SQLServerDriver";
public final static String connectionUrl =
"jdbc:sqlserver://localhost:1433;" +
"databaseName=Test;user=sa;password=XXXX;";

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,salary) VALUEs (1,'老王',18,'2004-03-01',9000)");
System.out.print(conn);
conn.close();
}
catch(SQLException e){

System.out.print(e.toString());
e.printStackTrace();
}

}
};

執行結果只會顯示為,

1
2
3
4
5

到executeUpdate時就完全沒有反應,

其中pie、age、sa為數字,name、birthday為varchar,

使用之資料庫為SQL server 2008,

資料表是建置在Test資料庫下名為person

還煩請各位大大賜教。

倘若改成 PreparedStatement 的方式進行連結,則程式碼及結果如下

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=XXXX;";
  
  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(conn);
    
    
    
    System.out.println("6");
  
    
    pstmt.executeUpdate();
    System.out.println("7");
    pstmt.close();
    conn.close();
    }
    catch(SQLException e){
      
      System.out.print(e.toString());
      pstmt.close();
      conn.close();
      
    }
    catch (Exception ex) {
      pstmt.close();
      conn.close();
      ex.printStackTrace();
      
      }
    
    
   }

};

雖執行結果上看來是已經執行成功

1
2
3
4
ConnectionID:1 ClientConnectionId: d754eb54-abe7-454b-8404-575d3fa4358f
6
7

但到資料庫中Test下的person資料表中查詢,

資料卻沒有匯入,

小弟嘗試偵錯後,

若今日使用System.out.print(ptmt.executeupdate());則顯示

-1

錯誤代碼那邊也會顯示三種狀況

1.Software caused connection abort: recv failed

2.com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset

3.SQL Server 未傳回回應。已關閉連接。

小弟現在在懷疑的是,

是否在利用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=XXXX;";
  
  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");
    
    System.out.println("5");
    //stmt.executeUpdate("create database b");
    System.out.println("6");
    //stmt.executeUpdate("INSERT INTO person(pie,name,age,birthday,salary) VALUEs (1,'老王',18,'2004-03-01',9000)");
    
    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){
      
      System.out.print(e.toString());
      
      e.printStackTrace();
    }
    
    
   }
};

但在這部分,

顯示結果如下

1
2
3
4
5
6

一樣進入到 pstmt.executeQuery();便形成無窮迴圈沒有反應,

還懇請請各位大大協助,

謝謝


joe52213 edited on 2012-04-02 17:30
reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
2892 資料庫更新及查詢問題 joe52213 5831 2012-04-02 00:52
2276 Re:資料庫更新及查詢問題 roytsang 49 2012-04-02 14:20
2314 Re:資料庫更新及查詢問題 joe52213 176 2012-04-02 15:14
2241 Re:資料庫更新及查詢問題 LiaoLuke 2049 2012-04-02 17:16
2389 Re:資料庫更新及查詢問題 joe52213 212 2012-04-02 17:34
» JWorld@TW »  JDBC/SQL討論區 » Microsoft SQL Server

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8