如何从C#MySQL查询中提取单个列数据?
如何从用户行提取列数据?例如:当客户端登录时,会在我的WCF服务器上调用该函数。它最多工作到var xx=ds.Tables[0]。行[1];在客户端抛出一个错误。基本上,我试图在数据库中验证用户/通行证。然后将其订阅到期的日期时间返回给客户端如何从C#MySQL查询中提取单个列数据?,c#,mysql,C#,Mysql,如何从用户行提取列数据?例如:当客户端登录时,会在我的WCF服务器上调用该函数。它最多工作到var xx=ds.Tables[0]。行[1];在客户端抛出一个错误。基本上,我试图在数据库中验证用户/通行证。然后将其订阅到期的日期时间返回给客户端 public bool Authenticate(string userId, string password, out string token) { token = ""; string MyConnecti
public bool Authenticate(string userId, string password, out string token)
{
token = "";
string MyConnectionString = "Server=localhost;Database=testdb;Uid=root;Pwd=admin;";
MySqlConnection sqlCon = new MySqlConnection(MyConnectionString);
sqlCon.Open();
MySqlCommand cmd = sqlCon.CreateCommand();
cmd.CommandText = "SELECT * FROM table1 WHERE username = '"+userId+"' AND password = '"+password+"'";
MySqlDataAdapter adap = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
adap.Fill(ds);
if (ds.Tables[0].Rows.Count > 0)
{
token = Guid.NewGuid().ToString();
var xx = ds.Tables[0].Rows[0];
CustomDataSource.AddUserData(token, userId);
return true;
}
return false;
}
var xx=ds.Tables[0]。行[0]。ItemArray[5]
是这样的。我假设您的查询只返回一行(如果它找到了密码正确的用户) 在这种情况下,您将从返回的第一行(索引零)获取日期。
我还假设您的日期存储在第五列(索引4),如果不是,您应该调整第二个索引以指向正确的列。(基数组索引始终为零) 话虽如此,让我指出这段代码的一个大问题。
这段代码可以很容易地用于,因为它连接字符串(可能是用户键入的)以形成传递给数据库引擎的Sql文本。相反,您应该使用参数来避免Sql注入问题和引用用户文本(带撇号的密码?)
尝试使用
foreach
循环
foreach (DataRow row in ds.Tables[0].Rows)
{
var xx = row[1];
var x = row[5];
// other codes
return true;
}
还有一件事,参数化查询以避免SQL注入
using(MySqlConnection sqlCon = new MySqlConnection(MyConnectionString))
{
using (MySqlCommand cmd = new MySqlCommand())
{
cmd.Connection = sqlCon;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT * FROM table1 WHERE username = @user AND password = @pass";
cmd.Parameters.AddWithValue("@user", userId);
cmd.Parameters.AddWithValue("@pass", password);
using (MySqlDataAdapter adap = new MySqlDataAdapter(cmd))
{
try
{
DataSet ds = new DataSet();
adap.Fill(ds);
}
catch (MySqlException e)
{
// do something with the exception
// don't hide it!
}
}
}
}
foreach (DataRow row in ds.Tables[0].Rows)
{
var xx = row[1];
var x = row[5];
// other codes
return true;
}
using(MySqlConnection sqlCon = new MySqlConnection(MyConnectionString))
{
using (MySqlCommand cmd = new MySqlCommand())
{
cmd.Connection = sqlCon;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT * FROM table1 WHERE username = @user AND password = @pass";
cmd.Parameters.AddWithValue("@user", userId);
cmd.Parameters.AddWithValue("@pass", password);
using (MySqlDataAdapter adap = new MySqlDataAdapter(cmd))
{
try
{
DataSet ds = new DataSet();
adap.Fill(ds);
}
catch (MySqlException e)
{
// do something with the exception
// don't hide it!
}
}
}
}