Using JDBC programming runtime error and its solution Daquan -- reprinted http://www.th7.cn/Program/java/201409/274583.shtml,www.th7.cn201409
Errors During JDBC programming and Solutions
Errors During JDBC programming and Solutions
Source code:
1. java. lang. ClassNotFoundException: com. microsoft. jdbc. sqlserver. SQLServerDriver
1.1 error message:
1.2 error description
1.3 error Solution
2. User 'sa 'Login Failed
2.1 error message:
2.2 error description
2.3 error Solution
3. Invalid parameter binding (s)
3.1 error message:
3.2 error description
3.3 error Solution
4. The object name 'jspbook' is invalid.
4.1 error message:
4.2 error description
4.3 error Solution
5. The column name 'bookid' is invalid.
5.1 error message:
5.2 error description
5.3 error Solution
6. Value can not be converted to requested type
6.1 error message:
6.2 error description
6.3 error Solution
Source code:
Package edu. ccniit. jspCourse. db. prim; import java. SQL. driverManager; import java. SQL. SQLException; /*** get the information of the book with the specified ID * @ author Administrator **/public class GetBookByID {/*** @ param args * @ throws ClassNotFoundException * @ throws SQLException */public static void main (String [] args) throws ClassNotFoundException, SQLException {Class. forName ("com. microsoft. jdbc. sqlserver. SQLServerDriver ");//--------- -------------------------------------------------------------------------------- String dbUrl = "jdbc: microsoft: sqlserver: // localhost: 1433"; java. SQL. connection con = DriverManager. getConnection (dbUrl, "sa", "123"); // optional String sqlStr = "select * from jspBook where bookId =? "; Java. SQL. preparedStatement pst = con. prepareStatement (sqlStr); // specify pst. setInt (3, 3); // parse java. SQL. resultSet rs = pst.exe cuteQuery (); // while (rs. next () {String book_id = rs. getString ("bookId"); String book_name = rs. getString ("book_name"); System. out. println (book_id + "" + book_name);} pst. close (); con. close ();}}
The following error is reported:
1. java. lang. ClassNotFoundException: com. microsoft. jdbc. sqlserver. SQLServerDriver
1.1 error message:
Exception in thread "main" java. lang. ClassNotFoundException: com. microsoft. jdbc. sqlserver. SQLServerDriver
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. ClassLoader. loadClassInternal (Unknown Source)
At java. lang. Class. forName0 (Native Method)
At java. lang. Class. forName (Unknown Source)
At edu. ccniit. jspCourse. db. prim. GetBookByID. main (GetBookByID. java: 23)
1.2 error description
Error message: the JDBC Driver Class com. microsoft. jdbc. SQLServer. SQLServerDriver of sqlserver cannot be found.
Cause of the error: the three driver files of SQLServer are not put in the build path of the project.
1.3 error Solution
Put the three driver files of SQLServer into the build path of the project. The procedure is as follows:
Step 1: Create a new directory named lib in the project. The operation sequence is as follows:
Right-click the project name and choose "New"> "folder ".
Step 2: copy the three database-driven files to the lib directory. The operation sequence is
Copy the three files obtained from the database-> select the lib directory in the project and right-click it-> select and paste
Step 3: Right-click the project name and choose build path> Configure build path> select database
The following page is displayed:
% 20
% 20 Step 4: click Add, select the three files in the lib directory under the jspCourseExample project, and click OK. The page is as follows: % 20
% 20
2. User 'sa 'logon Failure error 2.1:
Exception in thread "main" java. SQL. SQLException: [Microsoft] [SQLServer 2000 Driver for JDBC] [SQLServer] user 'sa' Login Failed.
At com. microsoft. jdbc. base. BaseExceptions. createException (Unknown Source)
At com. microsoft. jdbc. base. BaseExceptions. getException (Unknown Source)
At com. microsoft. jdbc. sqlserver. tds. TDSRequest. processErrorToken (Unknown Source)
At com. microsoft. jdbc. sqlserver. tds. TDSRequest. processReplyToken (Unknown Source)
At com. microsoft. jdbc. sqlserver. tds. TDSLoginRequest. processReplyToken (Unknown Source)
At com. microsoft. jdbc. sqlserver. tds. TDSRequest. processReply (Unknown Source)
At com. microsoft. jdbc. sqlserver. SQLServerImplConnection. open (Unknown Source)
At com. microsoft. jdbc. base. BaseConnection. getNewImplConnection (Unknown Source)
At com. microsoft. jdbc. base. BaseConnection. open (Unknown Source)
At com. microsoft. jdbc. base. BaseDriver. connect (Unknown Source)
At java. SQL. DriverManager. getConnection (Unknown Source)
At java. SQL. DriverManager. getConnection (Unknown Source)
At edu. ccniit. jspCourse. db. prim. GetBookByID. main (GetBookByID. java: 26)
2.2 error description
Error message: you cannot log on to the SQLServer database using the sa username and 123 password.
2.3 error Solution
Enter the correct database password.
Modify the sa user password in the security options in Enterprise Manager of SQLServer.
3. error message of Invalid parameter binding (s) 3.1:
Exception in thread "main" java. SQL. SQLException: [Microsoft] [SQLServer 2000 Driver for JDBC] Invalid parameter binding (s ).
At com. microsoft. jdbc. base. BaseExceptions. createException (Unknown Source)
At com. microsoft. jdbc. base. BaseExceptions. getException (Unknown Source)
At com. microsoft. jdbc. base. BasePreparedStatement. validateParameterIndex (Unknown Source)
At com. microsoft. jdbc. base. BasePreparedStatement. setObjectInternal (Unknown Source)
At com. microsoft. jdbc. base. BasePreparedStatement. setInt (Unknown Source)
At edu. ccniit. jspCourse. db. prim. GetBookByID. main (GetBookByID. java: 32)
3.2 error description
Error message: Question mark (?) in the SQL statement? An error occurs when the actual data is specified? The sequence number is specified incorrectly. in SQL? The sequence number starts from 1. In addition, the value type of the specified actual data must be the Data Type of the corresponding column in the database, and must be consistent with pst. set ××× (...) The types specified by XXX are the same.
3.3 error Solution
Change pst. setInt (3, 3); Code to pst. setInt (3, 3 );
4. The error message 4.1 is invalid for the object name 'jspbook:
Exception in thread "main" java. SQL. SQLException: [Microsoft] [SQLServer 2000 Driver for JDBC] [SQLServer] The Object Name 'jspbook' is invalid.
At com. microsoft. jdbc. base. BaseExceptions. createException (Unknown Source)
At com. microsoft. jdbc. base. BaseExceptions. getException (Unknown Source)
At com. microsoft. jdbc. sqlserver. tds. TDSRequest. processErrorToken (Unknown Source)
At com. microsoft. jdbc. sqlserver. tds. TDSRequest. processReplyToken (Unknown Source)
At com. microsoft. jdbc. sqlserver. tds. TDSRPCRequest. processReplyToken (Unknown Source)
At com. microsoft. jdbc. sqlserver. tds. TDSRequest. processReply (Unknown Source)
At com. microsoft. jdbc. sqlserver. SQLServerImplStatement. getNextResultType (Unknown Source)
At com. microsoft. jdbc. base. BaseStatement. commonTransitionToState (Unknown Source)
At com. microsoft. jdbc. base. BaseStatement. postImplExecute (Unknown Source)
At com. microsoft. jdbc. base. BasePreparedStatement. postImplExecute (Unknown Source)
At com. microsoft. jdbc. base. BaseStatement. commonExecute (Unknown Source)
At com.microsoft.jdbc.base.BaseStatement.exe cuteQueryInternal (Unknown Source)
At com.microsoft.jdbc.base.BasePreparedStatement.exe cuteQuery (Unknown Source)
At edu. ccniit. jspCourse. db. prim. GetBookByID. main (GetBookByID. java: 34)
4.2 error description
Error message: 34 lines of code "select * from jspBook where bookId =? ", JspBook represents the table name, that is, the table in the database is not called jspBook.
4.3 error Solution
Step 1: Make sure that the database URL must have the databaseName parameter; otherwise, JDBC
The connected database is the master database, but the master database is not the database we want to operate on.
Step 2: After the databaseName parameter is specified, check whether the table named jspBook in the database is used. Change jspBook to the correct table name.
String sqlStr = "select * from jspBook where bookId =? "; Code change
String sqlStr = "select * from B ook where bookId =? ";
5. The column name 'bookid' is invalid. Error 5.1:
Exception in thread "main" java. SQL. SQLException: [Microsoft] [SQLServer 2000 Driver for JDBC] [SQLServer] The column name 'bookid' is invalid.
At com. microsoft. jdbc. base. BaseExceptions. createException (Unknown Source)
At com. microsoft. jdbc. base. BaseExceptions. getException (Unknown Source)
At com. microsoft. jdbc. sqlserver. tds. TDSRequest. processErrorToken (Unknown Source)
At com. microsoft. jdbc. sqlserver. tds. TDSRequest. processReplyToken (Unknown Source)
At com. microsoft. jdbc. sqlserver. tds. TDSRPCRequest. processReplyToken (Unknown Source)
At com. microsoft. jdbc. sqlserver. tds. TDSRequest. processReply (Unknown Source)
At com. microsoft. jdbc. sqlserver. SQLServerImplStatement. getNextResultType (Unknown Source)
At com. microsoft. jdbc. base. BaseStatement. commonTransitionToState (Unknown Source)
At com. microsoft. jdbc. base. BaseStatement. postImplExecute (Unknown Source)
At com. microsoft. jdbc. base. BasePreparedStatement. postImplExecute (Unknown Source)
At com. microsoft. jdbc. base. BaseStatement. commonExecute (Unknown Source)
At com.microsoft.jdbc.base.BaseStatement.exe cuteQueryInternal (Unknown Source)
At com.microsoft.jdbc.base.BasePreparedStatement.exe cuteQuery (Unknown Source)
At edu. ccniit. jspCourse. db. prim. GetBookByID. main (GetBookByID. java: 34)
5.2 error description
Error message: 34 lines of code will use "select * from book where bookId =? "Query the database, where bookId represents the column name, but there is no column named bookId in the book table.
5.3 error Solution
Change jspBook to the correct table name.
String sqlStr = "select * from B ook where bookId =? "; Code change
String sqlStr = "select * from B ook where book _ Id =? ";
6. Value can not be converted to requested type6.1 error message:
Exception in thread "main" java. SQL. SQLException: [Microsoft] [SQLServer 2000 Driver for JDBC] Value can not be converted to requested type.
At com. microsoft. jdbc. base. BaseExceptions. createException (Unknown Source)
At com. microsoft. jdbc. base. BaseExceptions. getException (Unknown Source)
At com. microsoft. jdbc. base. BaseData. getInteger (Unknown Source)
At com. microsoft. jdbc. base. BaseResultSet. getInt (Unknown Source)
At com. microsoft. jdbc. base. BaseResultSet. getInt (Unknown Source)
At edu. ccniit. jspCourse. db. prim. GetBookByID. main (GetBookByID. java: 39)
6.2 error description
Error message: 39 lines of code (int book_name = rs. getInt ("book_name");) error. The cause of the error is: in the book table, the Data Type of the book_name column is varchar (40), that is, String type. In the code, the String type in the database must be converted to int type, however, in Java, the String type cannot be automatically converted to the int type, so an error occurs.
Remember: the type of a field in the table. The same type should be used when we use the get ××× () method to obtain the data of this column. Otherwise, an error will be reported.
6.3 error Solution
Set
Int book_name = rs. getInt ("book_name"); Code Change
String book_name = rs. getString ("book_name ");