不同的MySQL计数返回值
问题描述:
我有以下查询不同的MySQL计数返回值
SELECT count(*) COLUMN_NAME FROM INFORMATION_SCHEMA.Columns WHERE TABLE_NAME = 'ptbs.ms_karyawan'
并执行它们上的MySQL WAMP,它返回2列
但随后,当我执行上述使用C#的查询时,它返回-1列,这里是代码
private void button1_Click(object sender, EventArgs e)
{
int table = dbc.Count("ptbs.ms_karyawan");
msg.Sukses("Jumlah table adalah :"+table, "Login");
}
这里是dbc.count()
代码
public int Count(string table_name)
{
string query = "SELECT count(*) COLUMN_NAME FROM INFORMATION_SCHEMA.Columns WHERE TABLE_NAME = '"+table_name+"'";
int table = 0;
if (OpenConnection() == true)
{
//create mysql command
MySqlCommand cmd = new MySqlCommand();
//Assign the query using CommandText
cmd.CommandText = query;
//Assign the connection using Connection
cmd.Connection = connection;
//Execute query
table = cmd.ExecuteNonQuery();
//close connection
this.CloseConnection();
}
return table;
}
为什么他们返回不同的值,虽然我使用相同的查询?我做错了什么 ?
答
您需要执行Executescalar
方法
var retVal = cmd.Executescalar();
table = Convert.ToInt32(retVal);
ExecuteNonQuery
只返回受影响的行数。
但Executescalar
回报,如果你需要有关转换值从ExcureScalar返回更多信息,请检查下面的查询
返回的结果集的第一行的第一列,这样回答
答
您正在使用MySQLClient.ExecuteNonQuery执行查询ExecuteNonQuery
用于运行诸如INSERT
或UPDATE
语句的事件,而不是SELECT
。正因为如此,你不会影响任何行,并得到-1的结果。您需要执行查询,以便返回结果集,以便从中读取count (*) COLUMN_NAME
的值。
“..它返回2列”,列或行? – Nalaka526 2013-05-07 03:48:42
@nalaka它返回2列。 NIK和密码 – Cignitor 2013-05-07 10:49:06