一份关于连接数据库的Util类

自己认认真真总结了一份关于连接数据库的Util类,适用于仍和一种类型的数据库的任何一种Sql语句处理类型,希望大家共同学习,不当的地方望大家不吝赐教:public class DataTierUtil { public static bool isInitDatabaseInfo() { if (Util.isNullStr(DataInfo.DatabaseInfo.DBConnectionString, false)) { return false; } return true; } public static void initDatabaseInfo(DataConnType connType, string connString) { DataInfo.DatabaseInfo.DBConnectionType = connType; DataInfo.DatabaseInfo.DBConnectionString = connString; DataEngine.InitDataEngine(connType, connString); } public static DataSet getDataSet(string strCmd, CommandType cmdType) { DataSet o = new DataSet() ; DbConnection conn = DataConnFactory.instance.newObject(DataInfo.DatabaseInfo.DBConnectionType, DataInfo.DatabaseInfo.DBConnectionString); DbDataAdapter adapter = DataAdapterBuilder.buildDataAdapter(DataInfo.DatabaseInfo.DBConnectionType); adapter.SelectCommand = buildCommand(null , conn, cmdType, strCmd, null, null); switch (DataInfo.DatabaseInfo.DBConnectionType) { //case DataConnType.OdbcDB: // ((OdbcDataAdapter)adapter).Fill(o); // break; //case DataConnType.OleDB: // ((OleDbDataAdapter)adapter).Fill(o); // break; case DataConnType.OracleDB: ((OracleDataAdapter)adapter).Fill(o); break; case DataConnType.SqlDB: ((SqlDataAdapter)adapter).Fill(o); break; case DataConnType.MySqlDB: ((MySqlDataAdapter)adapter).Fill(o); break; default: ((OleDbDataAdapter)adapter).Fill(o); break; } return o; } public static DataTable PageCache(string PrimaryKey, string DisplayKey, string DataSource, string OrderClause, int PageSize, int PageNo, out int RowCount) { string[] paras = new string[] { }; object[] values = new object[] { }; return PageCache(PrimaryKey, DisplayKey, DataSource, OrderClause, PageSize, PageNo, paras, values, out RowCount); } public static DataTable PageCache(string PrimaryKey, string DisplayKey, string DataSource, string OrderClause, int PageSize, int PageNo, string[] paras, object[] values, out int RowCount) { DataTable dt = new DataTable(); string SQL = string.Empty; switch (DataInfo.DatabaseInfo.DBConnectionType) { case DataConnType.OracleDB: SQL = string.Format("Select {0} from {1} order by {2}", PrimaryKey, DataSource, OrderClause); break; case DataConnType.SqlDB: SQL = string.Format("Select {0} from {1} V order by {2}", PrimaryKey, DataSource, OrderClause); break; } dt = getDataTable(SQL,CommandType.Text, paras, values); RowCount = dt.Rows.Count; //需要返回总记录数 //if(RowCount == 0) return null ; int lStartRow = PageSize * (PageNo - 1) + 1; int lEndRow = lStartRow + PageSize - 1; //if (lStartRow > RowCount) return null ; if (lEndRow > RowCount) lEndRow = RowCount; string WhereClause = string.Empty; bool bIn = dt.Columns[0].DataType == typeof(String) || dt.Columns[0].DataType == typeof(string) || dt.Columns[0].DataType==typeof(DateTime); for (int i = lStartRow - 1; i < lEndRow; i++) { if (bIn) { WhereClause = WhereClause + "'" + dt.Rows[i][0] + "',"; } else { WhereClause = WhereClause + dt.Rows[i][0] + ","; } } if (WhereClause.Length > 0) WhereClause = WhereClause.Substring(0, WhereClause.Length - 1); else WhereClause = bIn? "''":"-1"; int NumIndex = PrimaryKey.IndexOf("."); if (NumIndex > 0) PrimaryKey = PrimaryKey.Substring(NumIndex + 1); switch (DataInfo.DatabaseInfo.DBConnectionType) { case DataConnType.OracleDB: SQL = string.Format("Select * from (Select {0} from {1} order by {4}) where {2} in ({3})", DisplayKey, DataSource, PrimaryKey, WhereClause, OrderClause); break; case DataConnType.SqlDB: SQL = string.Format("Select * from (Select {0} from {1} V1 )V where {2} in ({3}) order by {4}", DisplayKey, DataSource, PrimaryKey, WhereClause, OrderClause); break; } dt = getDataTable(SQL,CommandType.Text, paras, values); return dt; //返回当前页的查询记录 } public static DataTable getDataTable(string strCmd, CommandType cmdType) { return fillDataTable(null, null, null, strCmd, cmdType, null, null); } public static DataTable getDataTable(string strCmd, CommandType cmdType, string[] paramNames, object[] paramValues) { return fillDataTable(null, null, null, strCmd, cmdType, paramNames, paramValues); } public static DataTable getDataTable(DbTransaction trans, string strCmd, CommandType cmdType) { return fillDataTable(null, trans, null, strCmd, cmdType, null, null); } public static DataTable getDataTable(DbTransaction trans, string strCmd, CommandType cmdType, string[] paramNames, object[] paramValues) { return fillDataTable(null, trans, null, strCmd, cmdType, paramNames, paramValues); } public static DataTable getDataTable(DbConnection conn, string strCmd, CommandType cmdType) { return fillDataTable(null, null, conn, strCmd, cmdType, null, null); } public static DataTable getDataTable(DbConnection conn, string strCmd, CommandType cmdType, string[] paramNames, object[] paramValues) { return fillDataTable(null, null, conn, strCmd, cmdType, paramNames, paramValues); } public static DataTable fillDataTable(DataTable table, string strCmd, CommandType cmdType) { return fillDataTable(table, null, null, strCmd, cmdType, null, null); } public static DataTable fillDataTable(DataTable table, string strCmd, CommandType cmdType, string[] paramNames, object[] paramValues) { return fillDataTable(table, null, null, strCmd, cmdType, paramNames, paramValues); } public static DataTable fillDataTable(DbTransaction trans, DataTable table, string strCmd, CommandType cmdType) { return fillDataTable(table, trans, null, strCmd, cmdType, null, null); } public static DataTable fillDataTable(DbTransaction trans, DataTable table, string strCmd, CommandType cmdType, string[] paramNames, object[] paramValues) { return fillDataTable(table, trans, null, strCmd, cmdType, paramNames, paramValues); } public static DataTable fillDataTable(DbConnection conn, DataTable table, string strCmd, CommandType cmdType) { return fillDataTable(table, null, conn, strCmd, cmdType, null, null); } public static DataTable fillDataTable(DbConnection conn, DataTable table, string strCmd, CommandType cmdType, string[] paramNames, object[] paramValues) { return fillDataTable(table, null, conn, strCmd, cmdType, paramNames, paramValues); } private static DataTable fillDataTable(DataTable table, DbTransaction trans, DbConnection conn, string strCmd, CommandType cmdType, string[] paramNames, object[] paramValues) { bool isNewConn = false; if (table == null) { table = new DataTable(); } try { if (trans == null) { if (conn == null) { isNewConn = true; conn = DataConnFactory.instance.newObject(DataInfo.DatabaseInfo.DBConnectionType, DataInfo.DatabaseInfo.DBConnectionString); } } else { conn = trans.Connection; } DbDataAdapter adapter = DataAdapterBuilder.buildDataAdapter(DataInfo.DatabaseInfo.DBConnectionType); adapter.SelectCommand = buildCommand(trans, conn, cmdType, strCmd, paramNames, paramValues); switch (DataInfo.DatabaseInfo.DBConnectionType) { //case DataConnType.OdbcDB: // ((OdbcDataAdapter)adapter).Fill(table); // break; //case DataConnType.OleDB: // ((OleDbDataAdapter)adapter).Fill(table); // break; case DataConnType.OracleDB: ((OracleDataAdapter)adapter).Fill(table); break; case DataConnType.SqlDB: ((SqlDataAdapter)adapter).Fill(table); break; case DataConnType.MySqlDB: ((MySqlDataAdapter)adapter).Fill(table); break; default: ((OleDbDataAdapter)adapter).Fill(table); break; } } catch (Exception ex) { throw new DataTierException(ex.Message); } finally { if (trans == null) { if (isNewConn) { DataConnFactory.instance.closeObject(conn); } } } return table; } private static DbCommand buildCommand(DbTransaction trans, DbConnection conn, CommandType cmdType, string strCmd, string[] strParams, object[] strValues) { DbCommand command = conn.CreateCommand(); switch (DataInfo.DatabaseInfo.DBConnectionType) { case DataConnType.SqlDB: command.CommandText = strCmd.Replace(":", "@"); break; case DataConnType.OracleDB: strCmd = strCmd.Replace("'@", "{$}"); strCmd = strCmd.Replace("@", ":"); command.CommandText = strCmd.Replace("{$}", "'@"); command.CommandText = command.CommandText.Replace("#", "@"); break; //case DataConnType.OleDB: // strCmd = strCmd.Replace("'@", "{$}"); // if (strParams != null) // { // for (int i = 0; i < strParams.Length; i++) // { // strCmd = strCmd.Replace(strParams[i], "?"); // } // } // break; case DataConnType.MySqlDB: command.CommandText = strCmd.Replace("@", "?"); break; } command.CommandType = cmdType; if (trans != null) { command.Transaction = trans; } else { command.Transaction = null; } if ((strParams != null) && (strValues != null)) { long length = strParams.Length; if (length != strValues.Length) { throw new DataTierException(string.Concat(new object[] { " ", length, " ", strValues.Length, "" })); } for (int j = 0; j < length; j++) { command.Parameters.Add(createParameter(strParams[j], strValues[j])); } } return command; } private static DbParameter createParameter(string strParam, object val) { if (val == null) { val = DBNull.Value; } switch (DataInfo.DatabaseInfo.DBConnectionType) { case DataConnType.SqlDB: if (strParam.StartsWith("@")) { return new SqlParameter(strParam, val); } return new SqlParameter("@" + strParam, val); case DataConnType.OracleDB: return new OracleParameter(strParam.Replace("@", ""), val); case DataConnType.MySqlDB: return new MySqlParameter(strParam.Replace("@", "?"), val); } return new OleDbParameter(strParam.Replace("@", ""), val); } public static int executeNoQuery(DbTransaction trans, string strCmd, CommandType cmdType) { return executeNoQuery(trans, null, strCmd, cmdType, null, null); } public static int executeNoQuery(DbTransaction trans, string strCmd, CommandType cmdType, string[] paramNames, object[] paramValues) { return executeNoQuery(trans, null, strCmd, cmdType, paramNames, paramValues); } public static int executeNoQuery(DbConnection conn, string strCmd, CommandType cmdType) { return executeNoQuery(null, conn, strCmd, cmdType, null, null); } public static int executeNoQuery(DbConnection conn, string strCmd, CommandType cmdType, string[] paramNames, object[] paramValues) { return executeNoQuery(null, conn, strCmd, cmdType, paramNames, paramValues); } public static int executeNoQuery(string strCmd, CommandType cmdType) { return executeNoQuery(null, null, strCmd, cmdType, null, null); } public static int executeNoQuery(string strCmd, CommandType cmdType, string[] paramNames, object[] paramValues) { return executeNoQuery(null, null, strCmd, cmdType, paramNames, paramValues); } private static int executeNoQuery(DbTransaction trans, DbConnection conn, string strCmd, CommandType cmdType, string[] paramNames, object[] paramValues) { bool isNewConn = false; int num; try { if (trans == null) { if (conn == null) { isNewConn = true; conn = DataConnFactory.instance.newObject(DataInfo.DatabaseInfo.DBConnectionType, DataInfo.DatabaseInfo.DBConnectionString); } } else { conn = trans.Connection; } num = buildCommand(trans, conn, cmdType, strCmd, paramNames, paramValues).ExecuteNonQuery(); } catch (Exception ex) { throw new DataTierException(ex.Message); } finally { if (trans == null) { if (isNewConn) { DataConnFactory.instance.closeObject(conn); } } } return num; } public static DbDataReader getDataReader(DbTransaction trans, string strCmd, CommandType cmdType) { return getDataReader(trans, null, strCmd, cmdType, null, null); } public static DbDataReader getDataReader(DbTransaction trans, string strCmd, CommandType cmdType, string[] paramNames, object[] paramValues) { return getDataReader(trans, null, strCmd, cmdType, paramNames, paramValues); } public static DbDataReader getDataReader(DbConnection conn, string strCmd, CommandType cmdType) { return getDataReader(null, conn, strCmd, cmdType, null, null); } public static DbDataReader getDataReader(DbConnection conn, string strCmd, CommandType cmdType, string[] paramNames, object[] paramValues) { return getDataReader(null, conn, strCmd, cmdType, paramNames, paramValues); } private static DbDataReader getDataReader(DbTransaction trans, DbConnection conn, string strCmd, CommandType cmdType, string[] paramNames, object[] paramValues) { try { if (trans == null) { if (conn == null) { throw new DataTierException("没有数据连接"); } } else { conn = trans.Connection; } return buildCommand(trans, conn, cmdType, strCmd, paramNames, paramValues).ExecuteReader(); } catch (Exception ex) { throw new DataTierException(ex.Message); } } public static DbDataReader getDataReader(DbTransaction trans, string strCmd, CommandType cmdType, CommandBehavior behavior) { return getDataReader(trans, null, strCmd, cmdType, behavior, null, null); } public static DbDataReader getDataReader(DbTransaction trans, string strCmd, CommandType cmdType, CommandBehavior behavior, string[] paramNames, object[] paramValues) { return getDataReader(trans, null, strCmd, cmdType, behavior, paramNames, paramValues); } public static DbDataReader getDataReader(DbConnection conn, string strCmd, CommandType cmdType, CommandBehavior behavior) { return getDataReader(null, conn, strCmd, cmdType, behavior, null, null); } public static DbDataReader getDataReader(DbConnection conn, string strCmd, CommandType cmdType, CommandBehavior behavior, string[] paramNames, object[] paramValues) { return getDataReader(null, conn, strCmd, cmdType, behavior, paramNames, paramValues); } private static DbDataReader getDataReader(DbTransaction trans, DbConnection conn, string strCmd, CommandType cmdType, CommandBehavior behavior, string[] paramNames, object[] paramValues) { try { if (trans == null) { if (conn == null) { throw new DataTierException("没有数据连接"); } } else { conn = trans.Connection; } //return buildCommand(trans, conn, cmdType, strCmd, paramNames, paramValues).ExecuteReader(behavior); return buildCommand(trans, conn, cmdType, strCmd, paramNames, paramValues).ExecuteReader(); } catch (Exception ex) { throw new DataTierException(ex.Message); } } public static DbDataReader getDataReader(string strCmd, CommandType cmdType) { DbConnection conn = DataConnFactory.instance.newObject(DataInfo.DatabaseInfo.DBConnectionType, DataInfo.DatabaseInfo.DBConnectionString); return getDataReader(null, conn, strCmd, cmdType, CommandBehavior.CloseConnection, null, null); } public static DbDataReader getDataReader(string strCmd, CommandType cmdType, string[] paramNames, object[] paramValues) { DbConnection conn = DataConnFactory.instance.newObject(DataInfo.DatabaseInfo.DBConnectionType, DataInfo.DatabaseInfo.DBConnectionString); return getDataReader(null, conn, strCmd, cmdType, CommandBehavior.CloseConnection, paramNames, paramValues); } public static object getScalar(DbTransaction trans, string strCmd, CommandType cmdType) { return getScalar(trans, null, strCmd, cmdType, null, null); } public static object getScalar(DbTransaction trans, string strCmd, CommandType cmdType, string[] paramNames, object[] paramValues) { return getScalar(trans, null, strCmd, cmdType, paramNames, paramValues); } public static object getScalar(DbConnection conn, string strCmd, CommandType cmdType) { return getScalar(null, conn, strCmd, cmdType, null, null); } public static object getScalar(DbConnection conn, string strCmd, CommandType cmdType, string[] paramNames, object[] paramValues) { return getScalar(null, conn, strCmd, cmdType, paramNames, paramValues); } public static object getScalar(string strCmd, CommandType cmdType) { return getScalar(null, null, strCmd, cmdType, null, null); } public static object getScalar(string strCmd, CommandType cmdType, string[] paramNames, object[] paramValues) { return getScalar(null, null, strCmd, cmdType, paramNames, paramValues); } private static object getScalar(DbTransaction trans, DbConnection conn, string strCmd, CommandType cmdType, string[] paramNames, object[] paramValues) { bool isNewConn = false; try { if (trans == null) { if (conn == null) { isNewConn = true; conn = DataConnFactory.instance.newObject(DataInfo.DatabaseInfo.DBConnectionType, DataInfo.DatabaseInfo.DBConnectionString); } } else { conn = trans.Connection; } return buildCommand(trans, conn, cmdType, strCmd, paramNames, paramValues).ExecuteScalar(); } catch (Exception ex) { throw new DataTierException(ex.Message); } finally { if (trans == null) { if (isNewConn) { DataConnFactory.instance.closeObject(conn); } } } } /// <summary> /// 开始事务 /// </summary> public static void beginTransaction(out DbTransaction trans) { try { DbConnection conn = DataConnFactory.instance.newObject(DataInfo.DatabaseInfo.DBConnectionType, DataInfo.DatabaseInfo.DBConnectionString); trans = conn.BeginTransaction(); } catch (Exception ex) { throw new DataTierException(ex.Message); } } /// <summary> /// 回滚事务 /// </summary> public static void rollbackTransaction(ref DbTransaction trans) { if (trans != null) { if (trans.Connection != null) { trans.Rollback(); if (trans.Connection != null) { if (trans.Connection.State == ConnectionState.Open) { trans.Connection.Close(); } trans.Connection.Dispose(); } } trans = null; } } /// <summary> /// 结束事务 /// </summary> public static void endTransaction(ref DbTransaction trans) { if (trans != null) { if (trans.Connection != null) { trans.Commit(); if (trans.Connection != null) { if (trans.Connection.State == ConnectionState.Open) { trans.Connection.Close(); } trans.Connection.Dispose(); } } trans = null; } } }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来为你介绍一下如何使用Eclipse连接数据库并开发一个简单的学生管理系统。 实验环境:Eclipse IDE, MySQL数据库。 实验步骤: 1. 下载并安装MySQL数据库,并创建一个名为“student”的数据库。 2. 在该数据库中创建一个名为“students”的数据表,包含以下字段:id (int), name (varchar), gender (varchar), age (int), major (varchar)。 3. 在Eclipse中创建一个Java项目。 4. 在该项目下创建一个名为“lib”的文件夹,并将mysql-connector-java-5.1.48.jar文件放入其中。这个jar文件是连接Java和MySQL数据库的驱动程序。 5. 在Eclipse中创建一个,命名为“DatabaseConnection”。 6. 在该中,使用以下代码连接数据库: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DatabaseConnection { public static Connection getConnection() throws SQLException { Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "password"); System.out.println("Database connected successfully!"); } catch (SQLException e) { System.out.println("SQLException: " + e.getMessage()); System.out.println("SQLState: " + e.getSQLState()); System.out.println("VendorError: " + e.getErrorCode()); } catch (ClassNotFoundException e) { e.printStackTrace(); } return conn; } } ``` 这里的“root”和“password”分别为MySQL数据库的用户名和密码。getConnection()方法返回一个Connection对象,可以在其他中使用该方法获取数据库连接。 7. 在该项目中创建一个名为“Student”(学生)的Java,用于定义学生的信息。 ```java public class Student { private int id; private String name; private String gender; private int age; private String major; public Student(int id, String name, String gender, int age, String major) { this.id = id; this.name = name; this.gender = gender; this.age = age; this.major = major; } // 省略getter和setter方法 } ``` 8. 在该项目中创建一个名为“StudentDao”(学生数据访问对象)的Java,用于操作数据库中的学生数据。 ```java import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class StudentDao { private Connection conn; public StudentDao() { try { conn = DatabaseConnection.getConnection(); } catch (SQLException e) { e.printStackTrace(); } } public void add(Student student) { try { String sql = "INSERT INTO students(id, name, gender, age, major) VALUES (?, ?, ?, ?, ?)"; PreparedStatement ps = conn.prepareStatement(sql); ps.setInt(1, student.getId()); ps.setString(2, student.getName()); ps.setString(3, student.getGender()); ps.setInt(4, student.getAge()); ps.setString(5, student.getMajor()); ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } public void update(Student student) { try { String sql = "UPDATE students SET name = ?, gender = ?, age = ?, major = ? WHERE id = ?"; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, student.getName()); ps.setString(2, student.getGender()); ps.setInt(3, student.getAge()); ps.setString(4, student.getMajor()); ps.setInt(5, student.getId()); ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } public void delete(int id) { try { String sql = "DELETE FROM students WHERE id = ?"; PreparedStatement ps = conn.prepareStatement(sql); ps.setInt(1, id); ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } public List<Student> getAll() { List<Student> list = new ArrayList<Student>(); try { String sql = "SELECT * FROM students"; PreparedStatement ps = conn.prepareStatement(sql); ResultSet rs = ps.executeQuery(); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); String gender = rs.getString("gender"); int age = rs.getInt("age"); String major = rs.getString("major"); Student student = new Student(id, name, gender, age, major); list.add(student); } } catch (SQLException e) { e.printStackTrace(); } return list; } public Student getById(int id) { Student student = null; try { String sql = "SELECT * FROM students WHERE id = ?"; PreparedStatement ps = conn.prepareStatement(sql); ps.setInt(1, id); ResultSet rs = ps.executeQuery(); if (rs.next()) { String name = rs.getString("name"); String gender = rs.getString("gender"); int age = rs.getInt("age"); String major = rs.getString("major"); student = new Student(id, name, gender, age, major); } } catch (SQLException e) { e.printStackTrace(); } return student; } } ``` 该中的方法分别用于添加、更新、删除、查询学生信息。 9. 在该项目中创建一个名为“Main”(主程序)的Java,用于测试上述代码。 ```java import java.util.List; public class Main { public static void main(String[] args) { StudentDao dao = new StudentDao(); // 添加学生信息 Student student1 = new Student(1, "张三", "男", 20, "计算机科学"); dao.add(student1); Student student2 = new Student(2, "李四", "女", 21, "软件工程"); dao.add(student2); Student student3 = new Student(3, "王五", "男", 22, "信息安全"); dao.add(student3); // 查询所有学生信息 List<Student> list = dao.getAll(); for (Student student : list) { System.out.println(student.getId() + "\t" + student.getName() + "\t" + student.getGender() + "\t" + student.getAge() + "\t" + student.getMajor()); } // 根据id查询学生信息 Student student = dao.getById(1); if (student != null) { System.out.println(student.getId() + "\t" + student.getName() + "\t" + student.getGender() + "\t" + student.getAge() + "\t" + student.getMajor()); } // 更新学生信息 student.setMajor("物联网工程"); dao.update(student); // 删除学生信息 dao.delete(2); } } ``` 该中的代码用于测试数据库连接和学生信息的操作。 实验结论: 通过该实验,我们可以学习到如何在Eclipse中连接MySQL数据库,并实现一个简单的学生管理系统。这个学生管理系统可以用于添加、更新、删除、查询学生信息,具有一定的实用价值。同时,我们也了解到了Java和MySQL数据库的基本操作方法。这对于我们进行后续的数据库开发工作具有重要的意义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值