C#链接mysql
我测试了下,sql语句没错,放到数据库里 有记录出来,链接什么的也没报错,数据库链接正常,但是我返回的dt是null
public DataTable getWX(string tname)
{
string sql = "select stoptime,spe,TimeStampDiff(SECOND,gpstime,now()) servertime,model,gpstime,lon,lat from tb_terminal where tName='" + tname + "'";
return DBAccess.getDataMySql(sql, "mySql");
}
public static DataTable getDataMySql(string sql, string connString)
{
using (MySqlConnection conn = new MySqlConnection(connectionString(connString)))
{
using (MySqlCommand comm = new MySqlCommand(sql, conn))
{
DataTable dt = new DataTable();
try
{
conn.Open();
MySqlDataAdapter sda = new MySqlDataAdapter();
sda.SelectCommand = comm;
sda.Fill(dt);
}
catch (Exception) { throw; }
finally
{
comm.Parameters.Clear();
comm.Dispose();
conn.Close();
}
return dt;
}
}
}
[解决办法]
conn.Open();
MySqlDataAdapter sda = new MySqlDataAdapter();
sda.SelectCommand = comm;
DataSet ds=new DataSet();
sda.Fill(ds); //我使用的多是填充DataSet
dt = ds.Tables[0]; //然后由DataSet返回DataTable
希望对你有帮助
[解决办法]
断点调试:
1.conn的state是否为open;
2.comm的 SelectCommand看是否有换行等字符;
3.Fill之后看dt中是否有值;
另外你用的是MySQLDriverCS是吧?试下这个:
DataTable dt = new MySQLSelectCommand(conn,
new string[] { 你的查询字段 },
new string[] { "tb_terminal" },
new object[,] { { "tName", "=", tname } },
null,
null
).Table;