c#与mysql的连接登陆问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#与mysql的连接登陆问题相关的知识,希望对你有一定的参考价值。
如题,我想写个连接mysql数据库连接判断用户密码转到主程序的东东
IDE用的VS2005
装了tools for VS1.1和connector net 5.06
测试并添加数据源成功
但是不知道以后的代码改怎么写
using MySql.Data.MySqlClient;//不知道该怎么写前面类似引用的的东东了
而且不知道怎么写与MySQL建立连接的语句及查询、插入语句
新鸟请老鸟给个例子或者好的学习网址
先给30好的再加
using MySql.Data.MySqlClient;//不知道该怎么写这的类似引用的的东东了
最好是windows窗体程序
主要是想问根据connector net 5.0.6 setup wizard这个插件写个连接代码
2,在里面建立一个表叫UsersTable,设计表,建立三个列:u_id, u_name, u_pwd。
3,u_id是int数据类型,自增1;u_name是nvarchar类型,长度12;u_pwd是varchar类型,长度12,然后保存该表。
4,打开表,在第一行u_name输入“abc”,u_pwd输入“abc”。关闭表。
5,打开VS,新建一个Web项目。双击默认的default.aspx页面,然后将 <body>... </body>替换成下面的代码:
html code
<!-- 替换-->
<body style="margin: 0px">
<form id="form1" runat="server">
<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; height: 50px">
<tr>
<td style="vertical-align: middle; width: 50%; text-align: center; font-weight: bold; font-size: 25px; color: #003366; font-family: Arial;">yunleizhilian 的登录示范</td>
<td style="vertical-align: middle; text-align: left">
<asp:Panel ID="pnlLogin" runat="server" Height="30px" Width="100%">
用户名:<asp:TextBox ID="txbUserName" runat="server"></asp:TextBox>密码:
<!-- 对于密码TextBox,应把TextMode属性设置为Password,这样输入的值会以****形式出现,保护密码在输入时不被别人看到 -->
<asp:TextBox ID="txbUserPassword" runat="server" TextMode="Password"></asp:TextBox>
<asp:Button ID="btnLogin" runat="server" Text="登录" OnClick="btnLogin_Click" /></asp:Panel>
<asp:Panel ID="pnlWelcome" runat="server" Height="30px" Width="100%">
<asp:Label ID="lblWelcome" runat="server"></asp:Label>
<asp:Button ID="btnQuit" runat="server" CausesValidation="False" Text="退出" Width="146px" OnClick="btnQuit_Click" /></asp:Panel>
</td>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; height: 100px">
<tr>
<td style="vertical-align: middle; text-align: center">
<!-- 这个用来显示登录是否成功的信息 -->
<asp:Label ID="lblMessage" runat="server" ForeColor="#C00000"></asp:Label></td>
</tr>
</table>
</form>
</body>
<!-- 替换结束 -->
6,按F7,进入代码视图,在Page_Load()里写下面的代码:
C# code
protected void Page_Load(object sender, EventArgs e)
//确保页面是第一次被访问
if (!Page.IsPostBack)
CheckPageStatus();
//通过判断Session["UserName"]是否为空检查页面是否已登录(登录成功时会为Session["UserName"]注入值,就不空了。。否则就认为没有登录)。
private void CheckPageStatus()
if (Session["UserName"] != null)
pnlLogin.Visible = false;
pnlWelcome.Visible = true;
lblWelcome.Text = "欢迎登录," + Session["UserName"].ToString() + " 同志";
else
pnlWelcome.Visible = false;
pnlLogin.Visible = true;
//这个用来接收登录或退出后的信息。个人习惯,你也可以不这么做。
if (Session["Message"] != null)
lblMessage.Text = Session["Message"].ToString();
Session.Remove("Message");
else
lblMessage.Text = "";
7,先告一段落,按F5运行下,看看效果,你会发现当没有登录时,“退出”那部分没有显示。真神奇啊。
8,然后关闭这个IE页面,按VS左下角的“设计”,切换到设计视图。
9,双击设计视图的“登录”按钮,为它编写登录代码如下:
C# code
protected void btnLogin_Click(object sender, EventArgs e)
//下面的登录方法只是我的习惯而已,我常用DataTable做所有的事情。建议你不要依赖它……否则会被人笑话的……登录的好方法有很多,参考下就好了。
string strConnection = "SERVER=(local);DATABASE=UserTest;UID=sa;PWD=";//PWD=后面写上你的SQL SERVER 的 sa密码。
System.Data.SqlClient.SqlConnection cn = new System.Data.SqlClient.SqlConnection(strConnection);
//SQL 语句会吧?不会没办法,照抄吧。
string strSql = "SELECT * FROM UsersTable WHERE u_name='" + txbUserName.Text + "' AND u_pwd='" + txbUserPassword.Text + "'";
//SqlDataAdapter这东西有什么用,建议你去查MSDN。
System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(strSql, cn);
System.Data.DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
Session["UserName"] = dt.Rows[0]["u_name"].ToString();
Session["Message"] = "登录成功!";
Response.Redirect("default.aspx");
else
Session["Message"] = "登录失败。请重新登录。";
Response.Redirect("default.aspx");
10,再按F5测试下,在用户名和密码内输入123,按下“登录”按钮,会提示登录失败。如果都输入abc,就会提示登录成功。因为数据库内只有abc这个用户。
11,关闭IE页面,最后我们做退出。
12,回到设计视图,双击“退出”按钮,为它编写下面的代码:
C# code
protected void btnQuit_Click(object sender, EventArgs e)
if (Session["UserName"] != null)
Session.Remove("UserName");
Session["Message"] = "退出成功,欢迎您再来啊";
Response.Redirect("default.aspx");
13,按F5运行,登录成功后,按“退出”按钮,系统会提示已经退出。
14,为了验证用户是否已登录,你需要在所有需要登录的页面的Page_Load()内添加:
C# code
if(Session["UserName"]!=null)
//用户可以访问。
else
//用户不能访问,扔回到登录页面:Response.Redirect("login.aspx");
15,基本如此,搞定。 参考技术A c#连接MySql数据库的方法
一、用MySQLDriverCS连接MySQL数据库。
先下载和安装MySQLDriverCS,在安装文件夹下面找到MySQLDriver.dll,然后将MySQLDriver.dll添加引用到项目中。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySQLDriverCS;
namespace jxkh
public partial class frmLogin : Form
public frmLogin()
InitializeComponent();
private void btnLogin_Click(object sender, EventArgs e)
MySQLConnectionString tConnStr = new MySQLConnectionString("10.14.55.46", "performance", "administrator", "1234567@byd", 3306);
MySQLConnection tConn = new MySQLConnection(tConnStr.AsString);
try
tConn.Open(); //打开连接
MySQLCommand cmd4 = new MySQLCommand("set names gb2312", tConn);
cmd4.ExecuteNonQuery();
string tCmd = "select ID,Name,PassWord from managers"; //命令语句
MySQLCommand cmd = new MySQLCommand(tCmd,tConn); //在定义的tConn对象上执行查询命令
MySQLDataReader tReader = cmd.ExecuteReaderEx();
if(tReader.Read()) // 一次读一条记录
if(tReader["Name"].ToString()==textBox1.Text&&tReader["PassWord"].ToString()==textBox2.Text)
frmJxkh myJxkh = new frmJxkh();
myJxkh.Show();
tConn.Close();//重要!要及时关闭
tReader.Close();
catch
tConn.Close();
二、通过ODBC访问mysql数据库:
1. 安装Microsoft ODBC.net;
2. 安装MDAC 2.7或者更高版本;
3. 安装MySQL的ODBC驱动程序;
4. 管理工具 -> 数据源ODBC –>配置DSN…;
5. 解决方案管理中添加引用 Microsoft.Data.Odbc.dll(1.0.3300);
6. 代码中增加引用 using Microsoft.Data.Odbc;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq; //vs2005好像没有这个命名空间,在c#2008下测试自动生成的
using System.Text;
using System.Windows.Forms;
using Microsoft.Data.Odbc;
namespace mysql
public partial class Form1 : Form
public Form1()
InitializeComponent();
private void Form1_Load(object sender, EventArgs e)
string MyConString = "DRIVER=MySQL ODBC 3.51 Driver;" +
"SERVER=localhost;" +
"DATABASE=inv;" +
"UID=root;" +
"PASSWORD=831025;" +
"OPTION=3";
OdbcConnection MyConnection = new OdbcConnection(MyConString);
MyConnection.Open();
Console.WriteLine(""n success, connected successfully !"n");
string query = "insert into test values( 'hello', 'lucas', 'liu')";
OdbcCommand cmd = new OdbcCommand(query, MyConnection);
//处理异常:插入重复记录有异常
try
cmd.ExecuteNonQuery();
catch(Exception ex)
Console.WriteLine("record duplicate.");
finally
cmd.Dispose();
//***********************用read方法读数据到textbox**********************
string tmp1 = null;
string tmp2 = null;
string tmp3 = null;
query = "select * from test ";
OdbcCommand cmd2 = new OdbcCommand(query, MyConnection);
OdbcDataReader reader = cmd2.ExecuteReader();
while (reader.Read())
tmp1 = reader[0].ToString();
tmp2 = reader[1].ToString();
tmp3 = reader[2].ToString();
this.textBox1.Text = tmp1 + " " + tmp2 + " " + tmp3;
*/
//************************用datagridview控件显示数据表**************************
string MyConString = "DRIVER=MySQL ODBC 3.51 Driver;" +
"SERVER=localhost;" +
"DATABASE=inv;" +
"UID=root;" +
"PASSWORD=831025;" +
"OPTION=3";
OdbcConnection MyConnection = new OdbcConnection(MyConString);
OdbcDataAdapter oda = new OdbcDataAdapter("select * from customer ", MyConnection);
DataSet ds = new DataSet();
oda.Fill(ds, "employee");
this.dataGridView1.DataSource = ds.Tables["employee"];
*/
MyConnection.Close();
参考技术B 找段C#连接MYSQL的代码?
光标放在没有引用的类的字符上
接着SHIFT+ALT+F10
c# mysql连接字符串问题
【中文标题】c# mysql连接字符串问题【英文标题】:c# mysql connectionstring question 【发布时间】:2011-08-02 16:52:43 【问题描述】:我在 c# 中工作,我正在使用 mysql .net 连接器与远程 mysql 数据库进行交互。在代码中包含连接字符串并直接通过命令对象使用 db 是否安全,或者我应该发布到 php 中间层以隐藏连接字符串?
提前致谢。
【问题讨论】:
【参考方案1】:在我看来:
你不应该把你的连接 直接在您的 C# 代码中的字符串 if 您的应用程序可能是 反编译 = 我的意思是 WinForms 应用程序。
如果您使用的是 Windows 应用程序,然后尝试实现一个 登录窗口。用户将通过的地方 他/她的用户名和密码。这 解决方案需要一个或多个 mysql 用户 对于每一个会拥有的人 访问系统。
如果您在网络上工作 应用程序,然后把你连接 web.config 文件中的字符串。
如果您正在处理应用程序 不受限制的访问,那么我 认为你应该实施一些 层...但请记住,永远不要通过 SQL查询作为纯文本通过 网络,因为有人可以嗅到它。 我会推荐某种 网络服务。
【讨论】:
它是一个 winform 应用程序。我的应用程序的 1 部分实现了一个 mysql 消息提示,其中频繁地对数据库进行查询,比如说每 2 秒,你会说 php 层会减慢速度吗? 我想说,安全第一!就像在日常生活中一样……每个代理/经纪人/中介都会增加成本(在这种情况下是时间)。如果您的查询执行速度很快(快于 2 秒),那么我认为这很好 - 也许应该实施某种队列或信号量。【参考方案2】:那么连接字符串只是存放在PHP中间件层,那有什么区别呢?它必须存储在某个地方。
我会保持简单并将其存储在您编写的 C# 应用程序的 app.config 或 web.config 中。
关于存储它的几个注意事项: - 生产连接字符串不应存储在版本控制中。 - 生产配置文件应存在于生产服务器上,并带有连接字符串。 - 为了增加安全性,您可以加密您的连接字符串 (http://msdn.microsoft.com/en-us/library/89211k9b(v=vs.80).aspx)
【讨论】:
不同之处在于连接字符串将始终不可见,因为 php 代码不是公开的(?),据我所知,任何 http 分析器都可以抓取从 a 发送到 b 的连接字符串,还是不正确?以上是关于c#与mysql的连接登陆问题的主要内容,如果未能解决你的问题,请参考以下文章