请教c#各位大神,关于SQLiteHelper的增删改查的静态来直接调用方式

diyyh1004a 2019-06-10 06:13:08
我在项目中使用的类为SQLite数据库帮助静态类,使用时只需直接调用即可,无需实例化的
本来网上有一大堆相关的类,选了一个类后,无法调用
 private void TextBox2_TextChanged(object sender, EventArgs e)  //新增插入数据
{
SQLiteCommand cmdInsert = new SQLiteCommand(mConn);
string sql = "INSERT INTO KD(工号,到达时间)values(@工号,@到达时间)";
SQLiteParameter[] cmdParms = new SQLiteParameter[]{
new SQLiteParameter("@工号", (textBox2.Text)),
new SQLiteParameter("@到达时间", DateTime.Now)
};
cmd.ExecuteNonQuery(sql,cmdParms);
}


提示:
CS1503 参数 2: 无法从“System.Data.SQLite.SQLiteParameter[]”转换为“System.Data.CommandType
还有增删改查的方法也不知道如何调用,请各位大神指示一下。

SQLiteHelper类源码如下
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SQLite;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SQLiteQueryBrowser
{
/// <summary>
/// 本类为SQLite数据库帮助静态类,使用时只需直接调用即可,无需实例化
/// </summary>
public static class SQLiteHelper
{
/// <summary>
/// 数据库连接字符串
/// </summary>
//public static string connectionString = "Data Source=" + Application.StartupPath + "\\" + System.Configuration.ConfigurationSettings.AppSettings["Contr"];
public static string connectionString = "Data Source=" + Application.StartupPath + "/KDDB.db";

#region 执行数据库操作(新增、更新或删除),返回影响行数
/// <summary>
/// 执行数据库操作(新增、更新或删除)
/// </summary>
/// <param name="cmd">SqlCommand对象</param>
/// <returns>所受影响的行数</returns>
public static int ExecuteNonQuery(SQLiteCommand cmd)
{
int result = 0;
if (connectionString == null || connectionString.Length == 0)
throw new ArgumentNullException("connectionString");
using (SQLiteConnection con = new SQLiteConnection(connectionString))
{
SQLiteTransaction trans = null;
PrepareCommand(cmd, con, ref trans, true, cmd.CommandType, cmd.CommandText);
try
{
result = cmd.ExecuteNonQuery();
trans.Commit();
}
catch (Exception ex)
{
trans.Rollback();
throw ex;
}
}
return result;
}

/// <summary>
/// 执行数据库操作(新增、更新或删除)
/// </summary>
/// <param name="commandText">执行语句或存储过程名</param>
/// <param name="commandType">执行类型(默认语句)</param>
/// <returns>所受影响的行数</returns>
public static int ExecuteNonQuery(string commandText, CommandType commandType = CommandType.Text)
{
int result = 0;
if (connectionString == null || connectionString.Length == 0)
throw new ArgumentNullException("connectionString");
if (commandText == null || commandText.Length == 0)
throw new ArgumentNullException("commandText");
SQLiteCommand cmd = new SQLiteCommand();
using (SQLiteConnection con = new SQLiteConnection(connectionString))
{
SQLiteTransaction trans = null;
PrepareCommand(cmd, con, ref trans, true, commandType, commandText);
try
{
result = cmd.ExecuteNonQuery();
trans.Commit();
}
catch (Exception ex)
{
trans.Rollback();
throw ex;
}
}
return result;
}

/// <summary>
/// 执行数据库操作(新增、更新或删除)
/// </summary>
/// <param name="commandText">执行语句或存储过程名</param>
/// <param name="commandType">执行类型(默认语句)</param>
/// <param name="cmdParms">SQL参数对象</param>
/// <returns>所受影响的行数</returns>
public static int ExecuteNonQuery(string commandText, CommandType commandType = CommandType.Text, params SQLiteParameter[] cmdParms)
{
int result = 0;
if (connectionString == null || connectionString.Length == 0)
throw new ArgumentNullException("connectionString");
if (commandText == null || commandText.Length == 0)
throw new ArgumentNullException("commandText");

SQLiteCommand cmd = new SQLiteCommand();
using (SQLiteConnection con = new SQLiteConnection(connectionString))
{
SQLiteTransaction trans = null;
PrepareCommand(cmd, con, ref trans, true, commandType, commandText, cmdParms);
try
{
result = cmd.ExecuteNonQuery();
trans.Commit();
}
catch (Exception ex)
{
trans.Rollback();
throw ex;
}
}
return result;
}
#endregion

#region 执行数据库操作(新增、更新或删除)同时返回执行后查询所得的第1行第1列数据
/// <summary>
/// 执行数据库操作(新增、更新或删除)同时返回执行后查询所得的第1行第1列数据
/// </summary>
/// <param name="cmd">SqlCommand对象</param>
/// <returns>查询所得的第1行第1列数据</returns>
public static object ExecuteScalar(SQLiteCommand cmd)
{
object result = 0;
if (connectionString == null || connectionString.Length == 0)
throw new ArgumentNullException("connectionString");
using (SQLiteConnection con = new SQLiteConnection(connectionString))
{
SQLiteTransaction trans = null;
PrepareCommand(cmd, con, ref trans, true, cmd.CommandType, cmd.CommandText);
try
{
result = cmd.ExecuteScalar();
trans.Commit();
}
catch (Exception ex)
{
trans.Rollback();
throw ex;
}
}
return result;
}

/// <summary>
/// 执行数据库操作(新增、更新或删除)同时返回执行后查询所得的第1行第1列数据
/// </summary>
/// <param name="commandText">执行语句或存储过程名</param>
/// <param name="commandType">执行类型(默认语句)</param>
/// <returns>查询所得的第1行第1列数据</returns>
public static object ExecuteScalar(string commandText, CommandType commandType = CommandType.Text)
{
object result = 0;
if (connectionString == null || connectionString.Length == 0)
throw new ArgumentNullException("connectionString");
if (commandText == null || commandText.Length == 0)
throw new ArgumentNullException("commandText");
SQLiteCommand cmd = new SQLiteCommand();
using (SQLiteConnection con = new SQLiteConnection(connectionString))
{
SQLiteTransaction trans = null;
PrepareCommand(cmd, con, ref trans, true, commandType, commandText);
try
{
result = cmd.ExecuteScalar();
trans.Commit();
}
catch (Exception ex)
{
trans.Rollback();
throw ex;
}
}
return result;
}

/// <summary>
/// 执行数据库操作(新增、更新或删除)同时返回执行后查询所得的第1行第1列数据
/// </summary>
/// <param name="commandText">执行语句或存储过程名</param>
/// <param name="commandType">执行类型(默认语句)</param>
/// <param name="cmdParms">SQL参数对象</param>
/// <returns>查询所得的第1行第1列数据</returns>
public static object ExecuteScalar(string commandText, CommandType commandType = CommandType.Text, params SQLiteParameter[] cmdParms)
{
object result = 0;
if (connectionString == null || connectionString.Length == 0)
throw new ArgumentNullException("connectionString");
if (commandText == null || commandText.Length == 0)
throw new ArgumentNullException("commandText");

SQLiteCommand cmd = new SQLiteCommand();
using (SQLiteConnection con = new SQLiteConnection(connectionString))
{
SQLiteTransaction trans = null;
PrepareCommand(cmd, con, ref trans, true, commandType, commandText, cmdParms);
try
{
result = cmd.ExecuteScalar();
trans.Commit();
}
catch (Exception ex)
{
trans.Rollback();
throw ex;
}
}
return result;
}
#endregion

#region 执行数据库查询,返回SqlDataReader对象
/// <summary>
/// 执行数据库查询,返回SqlDataReader对象
/// </summary>
/// <param name="cmd">SqlCommand对象</param>
/// <returns>SqlDataReader对象</returns>
public static DbDataReader ExecuteReader(SQLiteCommand cmd)
{
DbDataReader reader = null;
if (connectionString == null || connectionString.Length == 0)
throw new ArgumentNullException("connectionString");

SQLiteConnection con = new SQLiteConnection(connectionString);
SQLiteTransaction trans = null;
PrepareCommand(cmd, con, ref trans, false, cmd.CommandType, cmd.CommandText);
try
{
reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
throw ex;
}
return reader;
}

/// <summary>
/// 执行数据库查询,返回SqlDataReader对象
/// </summary>
/// <param name="commandText">执行语句或存储过程名</param>
/// <param name="commandType">执行类型(默认语句)</param>
/// <returns>Sql
...全文
540 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
diyyh1004a 2019-06-12
  • 打赏
  • 举报
回复
嗯嗯,感谢六楼,我当时决定用的这个sqlitehelp的其中一个主要原因,就是因为它使用了事务。
正怒月神 2019-06-11
  • 打赏
  • 举报
回复
大量数据用sqlbulkcopy
diyyh1004a 2019-06-11
  • 打赏
  • 举报
回复
写不进,实在没有办法,现在我是这样用的。以后用到大量数据写入数据库时,估计有点吃力。以后还找更好的办法 private void TextBox2_TextChanged(object sender, EventArgs e) //新增插入数据 { string czsj = DateTime.Now.ToString(); string sql = "INSERT INTO KD (工号,到达时间) VALUES ('" + textBox2.Text + "','" + czsj + "')";// 新增插入数据 SQLiteCommand command = new SQLiteCommand(sql, mConn); command.ExecuteNonQuery(); }
秋的红果实 2019-06-11
  • 打赏
  • 举报
回复
ExecuteNonQuery()、ExecuteScalar()都有三个重载, 定义时有几个参数,调用时就传递几个参数
diyyh1004a 2019-06-11
  • 打赏
  • 举报
回复
感谢正怒月神,用了三个参数,我在调用时显示“没有使用三重参数“ 哎我就是不知道调用方法 ...............我再试试
zijiang001 2019-06-11
  • 打赏
  • 举报
回复
sqlite的话不知道有没有sqlbulkcopy sqlite在大数据量写入的时候,打开事务写入在提交会快很多
正怒月神 2019-06-10
  • 打赏
  • 举报
回复
太多了,不细看了。 你参数位置放错了。 public static int ExecuteNonQuery(string commandText, CommandType commandType = CommandType.Text, params SQLiteParameter[] cmdParms) 你调用的方式就应该是 cmd.ExecuteNonQuery(sql,CommandType.Text,cmdParms);

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧