我是Java的新手,甚至还不是Java数据库连接的新手。当我将它放在Main类中时,我设法创建了一个数据库连接并查询了一个表。现在,将其移到名为Connection的新类中,我遇到了错误:
package lokate;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
public class Connection {
private static Statement stmt = null;
private static ResultSet rs = null;
private static Connection con = null;
public Connection() throws SQLException {
try {
Class.forName("com.mysql.jdbc.Driver");
String connectionUrl = "jdbc:mysql://localhost:3306/Lokate?" +
"user=root&password=";
con = DriverManager.getConnection(connectionUrl);
stmt = con.createStatement();
retriveData("SELECT * FROM Users");
int rowsEffected = 0;
} catch (SQLException sqlEx) {
System.out.println("SQL Exception: "+ sqlEx.toString());
} catch (ClassNotFoundException classEx) {
System.out.println("Class Not Found Exception: "+ classEx.toString());
} catch (Exception Ex) {
System.out.println("Exception: "+ Ex.toString());
}
}
public static void retriveData(String SQL) throws Exception {
rs = stmt.executeQuery(SQL);
while (rs.next())
{
System.out.println(rs.getString("fname") + " : " + rs.getString("lname"));
}
}
}
我收到一条错误消息,说找不到符号。符号:方法createStatement()和con = DriveManager .....不可比拟的类型。
有人可以帮忙吗?
另外,最好的做法是将连接放在这样的类中,然后每次我想对数据库做某事时都调用一个新对象吗?
问候,
比利
我想说您的代码是许多最差做法的示例。让我来计算一下:
retrieveData
方法完全毫无价值。您将如何处理所有这些印刷报表?将它们加载到数据结构或对象中是否更好,以便您的其余代码可以使用该信息?rowsAffected
-“影响”是动词,“效果”是名词。另一个变量没有任何用处。你走错了路。重新考虑一下。
我认为您会发现此代码更有用。
package persistence;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DatabaseUtils
{
public static Connection createConnection(String driver, String url, String username, String password) throws ClassNotFoundException, SQLException
{
Class.forName(driver);
if ((username == null) || (password == null) || (username.trim().length() == 0) || (password.trim().length() == 0))
{
return DriverManager.getConnection(url);
}
else
{
return DriverManager.getConnection(url, username, password);
}
}
public static void close(Connection connection)
{
try
{
if (connection != null)
{
connection.close();
}
}
catch (SQLException e)
{
e.printStackTrace();
}
}
public static void close(Statement st)
{
try
{
if (st != null)
{
st.close();
}
}
catch (SQLException e)
{
e.printStackTrace();
}
}
public static void close(ResultSet rs)
{
try
{
if (rs != null)
{
rs.close();
}
}
catch (SQLException e)
{
e.printStackTrace();
}
}
public static void rollback(Connection connection)
{
try
{
if (connection != null)
{
connection.rollback();
}
}
catch (SQLException e)
{
e.printStackTrace();
}
}
public static List<Map<String, Object>> map(ResultSet rs) throws SQLException
{
List<Map<String, Object>> results = new ArrayList<Map<String, Object>>();
try
{
if (rs != null)
{
ResultSetMetaData meta = rs.getMetaData();
int numColumns = meta.getColumnCount();
while (rs.next())
{
Map<String, Object> row = new HashMap<String, Object>();
for (int i = 1; i <= numColumns; ++i)
{
String name = meta.getColumnName(i);
Object value = rs.getObject(i);
row.put(name, value);
}
results.add(row);
}
}
}
finally
{
close(rs);
}
return results;
}
}
我有一些集成测试,为此我使用Testcontainers。但我突然意识到,当我的应用程序数据库docker容器关闭时,所有其他测试(不包括使用Testcontainers的集成测试)都失败了(甚至是Spring Boot Initializer生成的
在使用Node.js之前,我只使用过PHP。在使用MYSQL时,我能够在PHP中做的是,我可以将database.PHP文件包含在我想要执行查询的文件中。 在Node.js中似乎不是这样。这是我的database.js文件 那么我需要在我的文件login.js中这样做 但是,当我尝试运行时,我发现db.query不是一个函数。 这是为什么?不应该更复杂还是应该?
我正在上Java课程的第三周。我正在做一个下星期要交的课堂作业。使用控制台作为输出,我可以毫无问题地完成分配,这是可以接受的。然而,教授也建议我们研究JTextArea,并考虑将其用于我们的程序输出。 我从一个教程中找到了一些代码,并且能够至少得到一个文本块来显示我要显示的第一行文本。但是在我编写实际程序时,我需要随着程序的进展继续向文本块添加额外的行。
我是firestore数据库的新手,我已经在android studio中开发了一个应用程序来访问firestore数据库中的数据。我的应用程序有两种类型的用户类别1。管理2。用户我已经使用短信服务提供商的API实现了移动号码认证逻辑。我没有使用谷歌的firebase认证。我不能理解如何编写firestore数据库的规则。 admin-->可以读写所有集合 用户-->可以读取所有集合,但只能写入少
本文向大家介绍C#连接数据库和更新数据库的方法,包括了C#连接数据库和更新数据库的方法的使用技巧和注意事项,需要的朋友参考一下 对数据库的操作总体可以分为两类:查询(select)和更新(insert,delete,update)。为什么这样来分呢?仔细看看两类的区别,select只是从数据库中将数据拿出来使用,而其余三者都会对数据库的物理数据进行修改。这篇文章将接着阐述更新数据。 更新数据库信息
{photos:[],product:[],report_date:null,report_sum:null,check_number:“”,qr_img:null,qr_link:“”} 旧表单-数据表单: ------WebKitFormBoundaryEFKGXHEAEJV3FGL7内容-配置:表单-数据;name=“report_date”2018-08-17t12:00:00.000z-