C# Mysql 如何做成类 还有怎么调用

lidaoying 2018-09-27 10:27:57
//连接mysql数据库
MySqlConnectionStringBuilder sb = new MySqlConnectionStringBuilder();
sb.Server = "127.0.0.1";
sb.Port = 3306;
sb.Database = "tracesystem";
sb.UserID = "root";
sb.Password = "123456";
sb.CharacterSet = "utf8";
MySqlConnection con = new MySqlConnection(sb.ConnectionString);//实例化连接

string name = user.Text.Trim();
Encrypt en = new Encrypt(pass.Text);//实例化Encrypt
string password = en.str2;

String query = "select * from user where username='" + name + "' and password='" + password + "'";//向数据库服务器发送指令
MySqlCommand cmd = new MySqlCommand(query, con);
//执行结果赋值到dr,dr为只读
MySqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
if (dr["locked"].ToString() =="0")
{
Program.LoginFrmCmbValue = name;
//登陆次数
string insert = "update user set logintime=logintime+1 where username='" + name + "'";
MySqlCommand cmdd = new MySqlCommand(insert, con);

//登陆记录
string insert1 = "insert ignore into login(username,loginip,version,logintimer) values('" + name + "'," + "'" + GetIpAddress() + "'," + "'" + Application.ProductVersion.ToString() + "'," + "'" + DateTime.Now.ToString() + "')";
MySqlCommand cmds = new MySqlCommand(insert1, con);
dr.Close();
cmds.ExecuteNonQuery();
cmdd.ExecuteNonQuery();
//end
INIhelp.SetValue("Username", name);
this.DialogResult = DialogResult.OK;
this.Dispose();
this.Close();
}
}


上面代码我现在是直接放到form窗体上的,因为很多窗体都要用,我想做成类,然后调用,请问如何修改,求指导,分不多了,麻烦直接帮忙修改源码,谢谢
...全文
861 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
Warmwinter12 2018-09-30
  • 打赏
  • 举报
回复
学习了,好棒
lidaoying 2018-09-29
  • 打赏
  • 举报
回复
        private void button1_Click(object sender, EventArgs e)
{
MySQLDBHelp help = new MySQLDBHelp();

String sql = "select * from user";
DataTable dr = help.getMySqlRead(sql);
while (dr.Read())
{
textBox1.Text=dr["username"].ToString();
textBox2.Text = dr["pass"].ToString();
}

}

提示:

错误 CS1061: “System.Data.DataTable”不包含“Read”的定义,并且找不到可接受类型为“System.Data.DataTable”的第一个参数的扩展方法“Read”(是否缺少 using 指令或程序集引用?)
Form1.cs(27,33): 错误 CS0021: 无法将带 [] 的索引应用于“System.Data.DataTable”类型的表达式
Form1.cs(28,33): 错误 CS0021: 无法将带 [] 的索引应用于“System.Data.DataTable”类型的表达式
lidaoying 2018-09-28
  • 打赏
  • 举报
回复
引用 13 楼 leon51 的回复:
我曾经也有此想法,但是后来无意中发现根本不用自己写,别人已经封装好了,直接用就可以了,输入MySqlHelper就可以接着点出来了。类似下面的代码:

string sql = "SELECT useralias,email FROM table";
using (MySqlDataReader dataReader = MySqlHelper.ExecuteReader(connString, sql))
{
while (dataReader.Read())
{
string user = dataReader[0].ToString();
string email = dataReader[1].ToString();
if (!dicEmail.ContainsKey(user))
{
dicEmail.Add(user, email);
}
}
}

具体怎么操作
lidaoying 2018-09-28
  • 打赏
  • 举报
回复
引用 18 楼 yenange 的回复:
1. 创建一个控制台应用程序;
2. 创建一个新的类文件 MySqlHelper.cs,
https://blog.csdn.net/yenange/article/details/17911373
中的代码复制过去, 保存。
3. 修改 MySqlHelper.cs 中的连接串。
4. 在 Main 方法中粘贴 #15 那两行代码。当然, sql 语句你要根据你实际的表来改。
5. 运行。
我的是winform窗口程序啊

数据库中,有name 和 pass
123 abc
在winform 如何把这段的abc读出到textbox里面

MySQLConn con = new MySQLConn();
string sql = "select * from user where name='123'";
dataGridView1.DataSource = con.ExecuteQuery(sql);


MySQLConn con = new MySQLConn();
string sql = "select * from user where name='123'";
textbox1 = con.ExecuteQuery(sql);
吉普赛的歌 2018-09-28
  • 打赏
  • 举报
回复
1. 创建一个控制台应用程序; 2. 创建一个新的类文件 MySqlHelper.cs, 把 https://blog.csdn.net/yenange/article/details/17911373 中的代码复制过去, 保存。 3. 修改 MySqlHelper.cs 中的连接串。 4. 在 Main 方法中粘贴 #15 那两行代码。当然, sql 语句你要根据你实际的表来改。 5. 运行。
lidaoying 2018-09-28
  • 打赏
  • 举报
回复
引用 16 楼 yenange 的回复:
你#12所说的那个其实可以简化为一个连接串, 把 MySqlHelper 中的连接串改一下就可以了。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using MySql.Data; //先引用MySql.Data.dll
using MySql.Data.MySqlClient;

namespace Util
{
public static class MySQLHelper
{
#region [ Connection ]
public static string connectionString = "Database=firstmysqldb;Data Source=localhost;Port=3306;User Id=root;Password=12;Charset=utf8;TreatTinyAsBoolean=false;";
public static MySqlConnection GetConnection
{
get
{
return new MySqlConnection(connectionString);
}
}
#endregion

#region [ ExecuteNonQuery ]
/// <summary>
/// 普通SQL语句执行增删改
/// </summary>
/// <param name="cmdText">SQL语句</param>
/// <param name="commandParameters">可变参数</param>
/// <returns>受影响行数</returns>
public static int ExecuteNonQuery(string cmdText, params MySqlParameter[] commandParameters)
{
return ExecuteNonQuery(cmdText, CommandType.Text, commandParameters);
}
/// <summary>
/// 存储过程执行增删改
/// </summary>
/// <param name="cmdText">存储过程</param>
/// <param name="commandParameters">可变参数</param>
/// <returns>受影响行数</returns>
public static int ExecuteNonQueryByProc(string cmdText, params MySqlParameter[] commandParameters)
{
return ExecuteNonQuery(cmdText, CommandType.StoredProcedure, commandParameters);
}
/// <summary>
/// 执行增删改
/// </summary>
/// <param name="cmdText">命令字符串</param>
/// <param name="cmdType">命令类型</param>
/// <param name="commandParameters">可变参数</param>
/// <returns>受影响行数</returns>
public static int ExecuteNonQuery(string cmdText, CommandType cmdType, params MySqlParameter[] commandParameters)
{
int result = 0;

using (MySqlConnection conn = GetConnection)
{
try
{
MySqlCommand command = new MySqlCommand();
PrepareCommand(command, conn, cmdType, cmdText, commandParameters);
result = command.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
if(conn!=null && conn.State!= ConnectionState.Closed)
conn.Close();
}
}
return result;
}
#endregion

#region [ ExecuteReader ]
/// <summary>
/// SQL语句得到 MySqlDataReader 对象
/// </summary>
/// <param name="cmdText">命令字符串</param>
/// <param name="commandParameters">可变参数</param>
/// <returns>MySqlDataReader 对象</returns>
public static MySqlDataReader ExecuteReader(string cmdText, params MySqlParameter[] commandParameters)
{
return ExecuteReader(cmdText, CommandType.Text, commandParameters);
}
/// <summary>
/// 存储过程得到 MySqlDataReader 对象
/// </summary>
/// <param name="cmdText">命令字符串</param>
/// <param name="commandParameters">可变参数</param>
/// <returns>MySqlDataReader 对象</returns>
public static MySqlDataReader ExecuteReaderByProc(string cmdText, params MySqlParameter[] commandParameters)
{
return ExecuteReader(cmdText, CommandType.StoredProcedure, commandParameters);
}
/// <summary>
/// 得到 MySqlDataReader 对象
/// </summary>
/// <param name="cmdText">命令字符串</param>
/// <param name="cmdType">命令类型</param>
/// <param name="commandParameters">可变参数</param>
/// <returns>MySqlDataReader 对象</returns>
public static MySqlDataReader ExecuteReader(string cmdText, CommandType cmdType, params MySqlParameter[] commandParameters)
{
MySqlDataReader result = null;

using (MySqlConnection conn = GetConnection)
{
try
{
MySqlCommand command = new MySqlCommand();
PrepareCommand(command, conn, cmdType, cmdText, commandParameters);
result = command.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
if (conn != null && conn.State != ConnectionState.Closed)
conn.Close();
}
}

return result;
}
#endregion

#region [ ExecuteDataSet ]
/// <summary>
/// 执行SQL语句, 返回DataSet
/// </summary>
/// <param name="cmdText">命令字符串</param>
/// <param name="commandParameters">可变参数</param>
/// <returns> DataSet </returns>
public static DataSet ExecuteDataSet(string cmdText, params MySqlParameter[] commandParameters)
{
return ExecuteDataSet(cmdText, CommandType.Text, commandParameters);
}

/// <summary>
/// 执行存储过程, 返回DataSet
/// </summary>
/// <param name="cmdText">命令字符串</param>
/// <param name="commandParameters">可变参数</param>
/// <returns> DataSet </returns>
public static DataSet ExecuteDataSetByProc(string cmdText, params MySqlParameter[] commandParameters)
{
return ExecuteDataSet(cmdText, CommandType.StoredProcedure, commandParameters);
}

/// <summary>
/// 返回DataSet
/// </summary>
/// <param name="cmdText">命令字符串</param>
/// <param name="cmdType">命令类型</param>
/// <param name="commandParameters">可变参数</param>
/// <returns> DataSet </returns>
public static DataSet ExecuteDataSet(string cmdText, CommandType cmdType, params MySqlParameter[] commandParameters)
{
DataSet result = null;

using (MySqlConnection conn = GetConnection)
{
try
{
MySqlCommand command = new MySqlCommand();
PrepareCommand(command, conn, cmdType, cmdText, commandParameters);
MySqlDataAdapter adapter = new MySqlDataAdapter();
adapter.SelectCommand = command;
result = new DataSet();
adapter.Fill(result);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
if (conn != null && conn.State != ConnectionState.Closed)
conn.Close();
}
}

return result;
}
#endregion

#region [ ExecuteDataTable ]
/// <summary>
/// 执行SQL语句, 返回DataTable
/// </summary>
/// <param name="cmdText">命令字符串</param>
/// <param name="commandParameters">可变参数</param>
/// <returns> DataTable </returns>
public static DataTable ExecuteDataTable(string cmdText, params MySqlParameter[] commandParameters)
{
return ExecuteDataTable(cmdText, CommandType.Text, commandParameters);
}

/// <summary>
/// 执行存储过程, 返回DataTable
/// </summary>
/// <param name="cmdText">命令字符串</param>
/// <param name="commandParameters">可变参数</param>
/// <returns> DataTable </returns>
public static DataTable ExecuteDataTableByProc(string cmdText, params MySqlParameter[] commandParameters)
{
return ExecuteDataTable(cmdText, CommandType.StoredProcedure, commandParameters);
}

/// <summary>
/// 返回DataTable
/// </summary>
/// <param name="cmdText">命令字符串</param>
/// <param name="cmdType">命令类型</param>
/// <param name="commandParameters">可变参数</param>
/// <returns> DataTable </returns>
public static DataTable ExecuteDataTable(string cmdText, CommandType cmdType, params MySqlParameter[] commandParameters)
{
DataTable dtResult = null;
DataSet ds = ExecuteDataSet(cmdText, cmdType, commandParameters);

if (ds != null && ds.Tables.Count > 0)
{
dtResult = ds.Tables[0];
}
return dtResult;
}
#endregion

#region [ ExecuteScalar ]
/// <summary>
/// 普通SQL语句执行ExecuteScalar
/// </summary>
/// <param name="cmdText">SQL语句</param>
/// <param name="commandParameters">可变参数</param>
/// <returns>受影响行数</returns>
public static object ExecuteScalar(string cmdText, params MySqlParameter[] commandParameters)
{
return ExecuteScalar(cmdText, CommandType.Text, commandParameters);
}
/// <summary>
/// 存储过程执行ExecuteScalar
/// </summary>
/// <param name="cmdText">存储过程</param>
/// <param name="commandParameters">可变参数</param>
/// <returns>受影响行数</returns>
public static object ExecuteScalarByProc(string cmdText, params MySqlParameter[] commandParameters)
{
return ExecuteScalar(cmdText, CommandType.StoredProcedure, commandParameters);
}
public static object ExecuteScalar(string cmdText, CommandType cmdType, params MySqlParameter[]

怎么在窗口调用执行一句SQL,你发连接的前面一段代码和后面一段测试代码是什么
吉普赛的歌 2018-09-28
  • 打赏
  • 举报
回复
你#12所说的那个其实可以简化为一个连接串, 把 MySqlHelper 中的连接串改一下就可以了。
吉普赛的歌 2018-09-28
  • 打赏
  • 举报
回复
引用 14 楼 lidaoying 的回复:
具体怎么操作
https://blog.csdn.net/yenange/article/details/17911373
string sql = "SELECT useralias,email FROM table";
DataTable dt = MySQLHelper.ExecuteDataTable(sql);
编程有钱人了 2018-09-27
  • 打赏
  • 举报
回复
建一个类啊,在类里面写个方法,public 静态方法 ,
leon51 2018-09-27
  • 打赏
  • 举报
回复

我曾经也有此想法,但是后来无意中发现根本不用自己写,别人已经封装好了,直接用就可以了,输入MySqlHelper就可以接着点出来了。类似下面的代码:

string sql = "SELECT useralias,email FROM table";
using (MySqlDataReader dataReader = MySqlHelper.ExecuteReader(connString, sql))
{
while (dataReader.Read())
{
string user = dataReader[0].ToString();
string email = dataReader[1].ToString();
if (!dicEmail.ContainsKey(user))
{
dicEmail.Add(user, email);
}
}
}

lidaoying 2018-09-27
  • 打赏
  • 举报
回复
引用 8 楼 xuzuning 的回复:
class MySQL
static public void Foo()
{
//这里是你主贴中的代码
}
}
//调用
MySQL.Foo();
或者如何把它设置为全局的,下面这段代码出现一个地方就整个程序都可以用

//连接mysql数据库
MySqlConnectionStringBuilder sb = new MySqlConnectionStringBuilder();
sb.Server = "127.0.0.1";
sb.Port = 3306;
sb.Database = "tracesystem";
sb.UserID = "root";
sb.Password = "123456";
sb.CharacterSet = "utf8";
MySqlConnection con = new MySqlConnection(sb.ConnectionString);//
}
lidaoying 2018-09-27
  • 打赏
  • 举报
回复
引用 10 楼 jndx_xyc 的回复:
楼主你把 MySqlConnection con = new MySqlConnection(sb.ConnectionString); 这段,改成:con = new MySqlConnection(sb.ConnectionString);
把MySqlConnection con;放到Foo()外边。
还是不行,提示当前上下文中不存在名称“con”
jndx_xyc 2018-09-27
  • 打赏
  • 举报
回复
楼主你把 MySqlConnection con = new MySqlConnection(sb.ConnectionString); 这段,改成:con = new MySqlConnection(sb.ConnectionString);
把MySqlConnection con;放到Foo()外边。

lidaoying 2018-09-27
  • 打赏
  • 举报
回复
引用 8 楼 xuzuning 的回复:
class MySQL
static public void Foo()
{
//这里是你主贴中的代码
}
}
//调用
MySQL.Foo();



class MySQL
static public void Foo()
{
//连接mysql数据库
MySqlConnectionStringBuilder sb = new MySqlConnectionStringBuilder();
sb.Server = "127.0.0.1";
sb.Port = 3306;
sb.Database = "tracesystem";
sb.UserID = "root";
sb.Password = "123456";
sb.CharacterSet = "utf8";
MySqlConnection con = new MySqlConnection(sb.ConnectionString);//
}
}
//调用


提示当前上下文中不存在名称“con”

MySQL.Foo();
String query = "select * from user where username='" + name + "' and password='" + password + "'";//向数据库服务器发送指令
MySqlCommand cmd = new MySqlCommand(query, con);
//执行结果赋值到dr,dr为只读
MySqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
if (dr["locked"].ToString() =="0")
{
Program.LoginFrmCmbValue = name;
//登陆次数
string insert = "update user set logintime=logintime+1 where username='" + name + "'";
MySqlCommand cmdd = new MySqlCommand(insert, con);

//登陆记录
string insert1 = "insert ignore into login(username,loginip,version,logintimer) values('" + name + "'," + "'" + GetIpAddress() + "'," + "'" + Application.ProductVersion.ToString() + "'," + "'" + DateTime.Now.ToString() + "')";
MySqlCommand cmds = new MySqlCommand(insert1, con);
dr.Close();
cmds.ExecuteNonQuery();
cmdd.ExecuteNonQuery();
//end
INIhelp.SetValue("Username", name);
this.DialogResult = DialogResult.OK;
this.Dispose();
this.Close();
}
}
xuzuning 2018-09-27
  • 打赏
  • 举报
回复
class MySQL
static public void Foo()
{
//这里是你主贴中的代码
}
}
//调用
MySQL.Foo();
lidaoying 2018-09-27
  • 打赏
  • 举报
回复
引用 5 楼 wsh_mar 的回复:
https://blog.csdn.net/kasama1953/article/details/51698444
能直接把我的代码改下给我吗
lidaoying 2018-09-27
  • 打赏
  • 举报
回复
引用 3 楼 hanjun0612 的回复:
你自己网上百度一个 sqlhelper,然后改改关键字就好了
sqlhelper研究半天也没有搞懂
正怒月神 2018-09-27
  • 打赏
  • 举报
回复
你自己网上百度一个 sqlhelper,然后改改关键字就好了
wsh_mar 2018-09-27
  • 打赏
  • 举报
回复
https://blog.csdn.net/kasama1953/article/details/51698444
wsh_mar 2018-09-27
  • 打赏
  • 举报
回复
https://blog.csdn.net/nepture911122/article/details/55252330
加载更多回复(1)

110,561

社区成员

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

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

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