新手求助,用Jdbc往MySQL数据库插入一条记录报错

新手求助,用Jdbc往MySQL数据库插入一条记录报错,第1张

java向数据库中插入数据,可以使用mysql数据库,使用statement类来 *** 作数据库,示例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

Connection conn = null

Statement st = null

try {

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")//加载驱动类

conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://<server_name>:<1433>", "name","pwd")

conn.setAutoCommit(false)

st = conn.createStatement()

// 模拟一个 str[i] = nd.getNodeValue().trim()

String[] str = new String[] { "aaa", "bbb", "ccc", "ddd", "eee","fff" }

String sqlStr = null

for (int i = 0i <str.lengthi++) {

sqlStr = "INSERT INTO <TABLENAME>(<COLNAME>)VALUES('" + str[i] + "')"//向数据库中插入数据

st.executeUpdate(sqlStr)

}

conn.commit()

} catch (Exception e) {

e.printStackTrace()

} finally {//释放数据库的资源

try {

if (st != null)

st.close()

if(conn != null &&!conn.isClosed()){

conn.close()

}

} catch (SQLException e) {

e.printStackTrace()

}

}

package com.example.MyClass

import java.sql.Connection

import java.sql.DriverManager

import java.sql.PreparedStatement

import java.sql.ResultSet

import java.sql.SQLException

//新建一个java类把公有的东西都抽出来,方便扩展节省代码。==20130120又练习的。

public class MyJdbc {

// 拿到连接的对象。

public Connection getConnection() {

// String driver =

// "com.mysql.jdbc.Driver"//因为现在不需要forClass映射驱动了,所以这个也可不要了。

String url = "jdbc:mysql://localhost:3306/mysql0120"// 数据库名mysql0120

String user = "root"// 数据库登陆用户

String password = "root2"// 数据库登陆密码

Connection con = null

try {

con = DriverManager.getConnection(url, user, password)// 那四句加这句就行了。

} catch (SQLException e) {

e.printStackTrace()

}

return con// 调这个方法就返回一个连接

}

// insert delete update===========-=-==增加,删除,更改都用这个通用方法=================

// 直接把sql语句和需要的参数(因为多个,所以用数组存)传过来。

public int update(String sql, Object[] parms) {

int row = 0

Connection con = this.getConnection()

PreparedStatement ps = null

try {

ps = con.prepareStatement(sql)

if (parms != null) {

for (int i = 0i <parms.lengthi++) {

ps.setObject(i + 1, parms[i])// 注意是i+1【从第一行算的】

}

}

row = ps.executeUpdate()// 返回影响的行数

} catch (SQLException e) {

e.printStackTrace()

} finally {

this.closeAll(con, ps, null)// 这不是查询【所以结果集是null】。

}

return row

}

// 所有关闭也是一样的,所以通用这个关闭方法。===-==========关闭==========

public void closeAll(Connection con, PreparedStatement ps, ResultSet rs) {

try {

if (rs != null)

rs.close()

if (ps != null)

ps.close()

if (con != null)

con.close()

} catch (SQLException e) {

e.printStackTrace()

}

}

}

上代码!!!import java.sql.Connection

import java.sql.DriverManager

import java.sql.SQLException

import java.sql.Statement

 

public class SqlTest {

    public static void main(String[] args) {

        Connection conn = null

        Statement stmt = null

        try {

            // ①

            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")

        } catch (ClassNotFoundException ex) {

            ex.printStackTrace()

        }

        try {

            String url = "jdbc:sqlserver://localhost:1433"

            String databaseName = "testuser=sapassword=sa "

            // ②

            conn = DriverManager.getConnection(url+databaseName)

            stmt = conn.createStatement()

            // ③

            int num = stmt.executeUpdate("insert into users values(‘zhangsan’,’123’)")

        } catch (SQLException ex1) {

            ex1.printStackTrace()

            // ④

        } finally {

            try {

                stmt.close()

                conn.close()//

            } catch (SQLException ex2) {

                ex2.printStackTrace()

            }

        }

    }

}

另外 值得一提的是,题目中的几处错误,在我提供的代码中已做修改


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10000188.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存