gpt4 book ai didi

java - 如何将数据(实际上是Jtable数据)添加到数据库中。有没有办法使用preparedstmt将对象插入数据库?

转载 作者:太空宇宙 更新时间:2023-11-04 06:54:59 27 4
gpt4 key购买 nike

public cntctus() 
{

JTable 的列名称

    String column[]= { "Name","Position","Phone"};

JTable

    Object [][]row = {
{"Prof. Renu Vig", "Director", "+123456"},
{"Mr. Sukhbir singh", "Assistant Professor", "+9123568989"},
{"Ms. shaweta", "BI teacher","9468645"}
};


table = new JTable(row,column);
TableModel tm = table.getModel();
java.sql.Connection con=null;
try {
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/training","root","");
try{
java.sql.Statement stmt =con.createStatement();
String maketable = "CREATE TABLE if not exists contacttable(Name Varchar(25),Position Varchar(20),Phone Varchar(20))";
stmt.executeUpdate(maketable);
System.out.print("table created ");
//insert into table contacttable query

PreparedStatement pstmt=con.prepareStatement("INSERT into contacttable select distinct values(?,?,?)");

获取一些包含数据的 TableModel

        for (int i = 0; i < tm.getRowCount(); i++) {
for (int j = 0; j < tm.getColumnCount(); j++) {
Object o = tm.getValueAt(i, j);


System.out.println("object from table is : " +o);
k=j+1;
pstmt.setString(k, (String)o);
}
pstmt.executeUpdate();
}

}
catch(SQLException s)
{
System.out.println(s);
}
}
catch(Exception e)
{
e.printStackTrace();
}

我想将整个对象插入数据库。简而言之,如何将jtable数据插入数据库。?请帮忙。

错误是:第 1 行的 sql 语法有错误 ('"prof. renu vig, "director"...

最佳答案

如果您希望在准备好的语句中包含多行,您可以只使用现有的内容,并在外部循环内部和内部循环外部(迭代 JTable 的循环,IE 每行添加一次批处理)添加对 pstmt.addBatch() 的调用。然后在迭代整个表后调用 pstmt.executeBatch()。

明智的说法是,如果您在插入时生成 key ,驱动程序还必须支持在批量插入时返回多个 key ,否则您可能只会得到生成的第一个 key 而不是所有 key 。或者,您可以在外循环的每次迭代中执行该语句(即每行一次),确保在每次执行后调用 .clearParamters() 。出于性能原因,您将希望重用preparedStatement。

你的插入语句也搞砸了。它只是 INSERT INTO contacttable VALUES(?,?,?)。摆脱选择不同的东西。

完成后它可能看起来像这样:

    String column[]= { "Name","Position","Phone"};
Object [][]row = {
{"Prof. Renu Vig", "Director", "+123456"},
{"Mr. Sukhbir singh", "Assistant Professor", "+9123568989"},
{"Ms. shaweta", "BI teacher","9468645"}
};

JTable table = new JTable(row,column);
TableModel tm = table.getModel();
java.sql.Connection con=null;
try
{

Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/training","root","");

java.sql.Statement stmt =con.createStatement();
String maketable = "CREATE TABLE if not exists contacttable(Name Varchar(25),Position Varchar(20),Phone Varchar(20))";
stmt.executeUpdate(maketable);
System.out.print("table created ");

PreparedStatement pstmt=con.prepareStatement("INSERT INTO contacttable VALUES(?,?,?)");

for (int i = 0; i < tm.getRowCount(); i++) {
for (int j = 0; j < tm.getColumnCount(); j++) {
Object o = tm.getValueAt(i, j);
System.out.println("object from table is : " +o);
pstmt.setString(j+1, (String)o);
}
pstmt.executeUpdate();
pstmt.clearParameters();
}
}
catch (Exception e) {
e.printStackTrace();
}

关于java - 如何将数据(实际上是Jtable数据)添加到数据库中。有没有办法使用preparedstmt将对象插入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22869785/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com