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

これは、私が疑っている問題の 1 つです。

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テーブル名とlikeの間にスペースはありません

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 に答える