0

* *i 阶段错误如下 我在notpade++中编写此代码 我如何从剂量构建我没有发现错误,它完全编译成功但是当我尝试运行它意味着使用这个命令 java JDBCExample 它会给出一个错误。

    import java.sql.*;
import java.sql.Connection.*;
import java.sql.DriverManager.*;
import java.sql.PreparedStatement.*;
import java.sql.ResultSet.*;
import java.sql.SQLException.*;

public class JDBCExample
{
//We Declared final variable for jdbc odbc drivers
static final String JDBC_DRIVER="com.mysql.jdbc.Driver";
static final String URL="jdbc:mysql://localhost//student";
    //We Declared Database Credentials
    static final String USERNAME="root";
    static final String PASSWORD="matix";
    public static void main(String args[])
    {
Connection conn=null;
Statement stmt=null;
try
{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Connection to be select the database.......");
conn=DriverManager.getConnection(URL,USERNAME,PASSWORD);
System.out.println("Connection to be database successfully.......");
System.out.println("..............................................................");
System.out.println("Inserting records into the table...");
stmt=conn.createStatement();
String strquery="INSERT INTO studentlogin"+"VALUES(1,'JAGDISHVALA@GMAIL.COM','ABC@123')";
stmt.executeUpdate(strquery);
System.out.println("Inserted records into the studentlogin table...");
}
catch(SQLException se){
se.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(stmt!=null)
conn.close();
}
catch(SQLException se){
se.printStackTrace();
}
try{
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
}
}
System.out.println("Goodbye!");
}
}

这个例子是在记事本++中完成的,当我编译时使用

javac JDBCExample.java 没有错误或异常发生

但是当我使用

java JDBC示例

它会给出错误

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at JDBCExample.main(JDBCExample.java:25)
4

3 回答 3

3

这是我怀疑的问题之一:

String strquery="INSERT INTO studentlogin"+"VALUES(1,'JAGDISHVALA@GMAIL.COM','ABC@123')";

这个查询在运行时变成这样:

INSERT INTO studentloginVALUES(1,'JAGDISHVALA@GMAIL.COM','ABC@123')";

这不是有效的 SQL 查询。

将其更改为:

String strquery="INSERT INTO studentlogin "+"VALUES(1,'JAGDISHVALA@GMAIL.COM','ABC@123')";
于 2013-10-12T07:42:12.687 回答
1

使用preparedStatement来克服这种类型的连接问题,preparedStatement也可以防止sql注入

PreparedStatement pt=conn.prepareStatement("INSERT INTO studentlogin VALUES(?,?,?)");
pt.setInt(1,1);
pt.seString(2,"JAGDISHVALA@GMAIL.COM");
pt.setString(3,"ABC@123");
pt.executeUpdate();
于 2013-10-12T07:46:01.270 回答
0

values表名和li ​​ke之间没有空格

studentlogin"+"VALUES

更改查询:

INSERT INTO studentlogin "+"VALUES(1,'JAGDISHVALA@GMAIL.COM','ABC@123')

分配一些空间 studentlogin VALUES并删除+,因为它不是必需的

INSERT INTO studentlogin VALUES(1,'JAGDISHVALA@GMAIL.COM','ABC@123')
于 2013-10-12T07:42:41.440 回答