使用 MySql 赋值变量
本文关键字:变量 赋值 MySql 使用 | 更新日期: 2023-09-27 18:34:31
我想通过我在 MySql DB 中获得的值来分配我的变量 [vPrenom_id_obtenu] ...使用以下代码,我收到一条错误消息:
不包含"执行标量"的定义....
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'。
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);
作为附加值,您不必担心数据类型分隔符(在这种情况下为单引号(
你需要使用
MySqlCommand 来使用 ExecuteScalar。 源代码中还缺少 SQL,即从某些内容中选择 *,或存储的进程名称。
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;
}
示例:
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"];
}
您使用 ADO.NET 类型错误。最简单的方法是使用 MySqlHelper 静态方法,如下所示:
string vFistNam_id_get = (string)
MySqlHelper.ExecuteScalar(dbConnString, "select `col1` from `table1`");