我不擅长java,还在尝试如何通过jdbc驱动程序将java连接到mysql(xampp),有人知道我为什么总是出错吗?
public class connect {
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException{
ResultSet rs = null;
PreparedStatement pst = null;
String hostName = "localhost";
String dbPort = "3306";
String databaseName = "Libraryusers";
String dbUser = "root";
String dbPassword = "";
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://"+hostName+":"
+ dbPort+"/"+databaseName+"?"+"user="+dbUser+"&password=" + dbPassword);
System.out.print("Database is connected !");
String sql = "select * from login where username = ? and password = ?";
pst = conn.prepareStatement(sql);
pst.setString(1,"rod1");
pst.setString(2,"rod");
rs = pst.executeQuery(sql);
if (rs.next())
{
System.out.println("username and password is correct");
}
else
{
System.out.println("invalid username and password");
}
}
}
以下是控制台结果
run:
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '? and password = ?' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.Util.getInstance(Util.java:408)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:943)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2483)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2441)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1381)
at login.connect.main(connect.java:44)
Database is connected
!C:\Users\rodchris\AppData\Local\NetBeans\Cache\8.2\executor-
snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)
我已经创建了数据库并插入了两个数据,其中一个是“username=rod1,password=rod”
根据https://dev.mysql.com/doc/refman/5.7/en/keywords.html,密码
是MySQLSQL中的保留字。因此,如果您想将其用作SQL标识符,则需要使用反引号对其进行引用;例如。
String sql = "select * from login where username = ? and `password` = ?";
(但是用户名
和登录
不要……)
通过在executeQuery(SQL)
再次指定SQL脚本,您取消了参数。。。
试试这样:
public static void main(String[] args)
throws ClassNotFoundException, InstantiationException, IllegalAccessException,
SQLException
{
final String hostName = "localhost";
final String dbPort = "3306";
final String databaseName = "Libraryusers";
final String dbUser = "root";
final String dbPassword = "";
// this is not needed anymore, but many still use it...
Class.forName("com.mysql.jdbc.Driver").newInstance();
try (final Connection conn = DriverManager.getConnection("jdbc:mysql://" + hostName + ":" +
dbPort + "/" + databaseName + "?user=" + dbUser + "&password=" +
dbPassword))
{
System.out.print("Database is connected !");
final String sql = "SELECT * FROM `login` WHERE `username` = ? AND `password` = ?";
try ( final PreparedStatement pst = conn.prepareStatement(sql))
{
pst.setString(1,"rod1");
pst.setString(2,"rod");
try (final ResultSet rs = pst.executeQuery())
{
if (rs.next())
{
System.out.println("username and password is correct");
}
else
{
System.out.println("invalid username and password");
}
}
}
}
}
尝试连接到SQL服务器2014时出错。我使用JRE7和sqljdbc4-4.0.jar 以下是我的java代码: 以下是完整的堆栈跟踪: JAVAext.dirs:C:\Cisco\CallStudio\eclipse\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext-com。微软sqlserver。jdbc。SQLServerException:驱动程序无法使用安全
我试图连接到mysql数据库使用hibernate从cfg文件作为 虽然我的连接字符串、用户名、密码是正确的,并且在其他具有基本jdbc连接的项目中运行良好,但当我使用hibernate尝试它时,我在控制台上遇到了这个错误 是的,数据库服务器已启动并运行,但来自此Hibernate应用程序的连接被拒绝
我是新来的,对Mysql和Python非常陌生。我对这个insert语句有一个问题: 错误是: 使用以下语句创建表: 我花了一整天的时间想弄清楚这件事。谁能给我一个指针吗?
我正在使用SpringMVC和Hibernate构建一个应用程序。我还没有将Hibernate和Spring集成在一起(对两者都是新的),并且希望确保可以首先通过Hibernate打开会话。 我创建了一个简单的函数来测试,当前收到以下错误: 线程“main”java.lang.nosuchmethoderror中出现异常:org.hibernate.integrator.internal.inte
我正试图让node.js将信息发送回一个网站我正试图从这里获取信息(rn它是一个临时值),但是我如何使用JavaScript获取信息呢?或者我需要更改node.js项目中的某些内容吗 当我试着 它将错误:“TypeError:Failed to Fetch”
问题内容: 我正在尝试使用Java中的PreparedStatement执行查询。 尝试执行查询时出现错误号1064(语法错误)。 我已经在MySQL查询浏览器中使用替代值测试了此方法,效果很好。 我的代码有什么问题? 以下是相关代码: 这是我得到的例外: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:SQL语法有错误;检查与您