1

我想通过我在 MySql DB 中获得的值来分配我的变量 [vPrenom_id_obtenu] ...使用以下代码,我收到一条错误消息:

不包含“ExecuteScalar”的定义....

string vFistNam_id_get;
string connDataBaseStr = "server=myserver;user=####;database=myDataBase;port=3306;password=dsdfsdfsdf123;";
string sqlDataBaseSelect = "SELECT column_fistname_id FROM table_identy WHERE column_famillyname='" + vFamillyName + "'";

MySqlConnection connDataBase = new MySqlConnection(connDataBaseStr); 
connDataBase.Open();
vFistNam_id_get = (string)connDataBase.ExecuteScalar();
connDataBase.Close();

如何检索“column_fistname_id”中的值?我的表的两列的类型

Le type de deux Colonnes de ma table [column_fistname_id] 和 [column_famillyname] 是 «text'。

4

4 回答 4

3

ExecuteScalar 是一种调用 MySqlCommand 实例而不是 MySqlConnection 实例的方法

正确的做法是:

using(MySqlConnection connDataBase = new MySqlConnection(connDataBaseStr))
{
   connDataBase.Open(); 
   MySqlCommand cmd = new MySqlCommand(sqlDataBaseSelect, connDataBase);
   vFistNam_id_get = (string)cmd.ExecuteScalar(); 
}

但是,由于另一个原因,您的代码是错误的。

这个 sql 字符串

string sqlDataBaseSelect = "SELECT column_fistname_id FROM table_identy " + 
                           "WHERE column_famillyname='" + vFamillyName + "'";

引领SqlInjection

你应该以这种方式重写它

string sqlDataBaseSelect = "SELECT column_fistname_id FROM table_identy " + 
                           "WHERE column_famillyname=?family";

然后在调用 ExecuteScalar 之前向命令添加一个参数

cmd.Parameters.AddWithValue("?family", vFamillyName);

作为附加值,您不必担心数据类型分隔符(在这种情况下为单引号)

于 2012-05-18T12:44:58.180 回答
0

您需要使用 MySqlCommand 才能使用 ExecuteScalar。您还缺少源代码中的 SQL,即 select * from something 或存储的过程名称。

public static int GetNumRows(String OrchardName) 
{ 
// Create Connection 
MySqlConnection con = new MySqlConnection(_connectionString); 

// Create Command 
MySqlCommand cmd = new MySqlCommand(); 
cmd.Connection = con; 
cmd.CommandText = "SELECT COUNT(*) FROM orchards WHERE OrchardName = @OrchardName";
 cmd.Parameters.Add("@OrchardName", OrchardName); 


// Return Count 
con.Open(); 
Int32 NumRows = (Int32)cmd.ExecuteScalar(); 
return NumRows; 

}
于 2012-05-18T12:45:21.580 回答
0

例子:

MySqlConnection connDataBase = new MySqlConnection(connDataBaseStr);
connDataBase.Open();
MySqlCommand command = connection.CreateCommand();
command.CommandText = "SELECT column_fistname_id FROM table_identy WHERE column_famillyname='" + vFamillyName + "'";
MySqlDataReader reader = command.ExecuteReader();
string vFistNam_id_get = null;
while (reader.Read())
{   
    vFistNam_id_get = (int)reader["column_fistname_id"];
}
于 2012-05-18T12:46:03.927 回答
0

您使用的 ADO.NET 类型错误。最简单的方法是使用 MySqlHelper 静态方法,如下所示:

string vFistNam_id_get = (string)
                    MySqlHelper.ExecuteScalar(dbConnString, "select `col1` from `table1`");
于 2012-05-18T12:47:12.577 回答