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」にある値を取得するにはどうすればよいですか?私のテーブルの2列のタイプ

Le type de deux Colonnes de matable[column_fistname_id]および[column_famillyname]は«text'です。

4

4 に答える 4

3

ExecuteScalarは、MySqlConnectionではなくMySqlCommandのインスタンスを呼び出すメソッドです。

正しい方法は次のとおりです。

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

ExecuteScalarを使用するには、MySqlCommandを使用する必要があります。また、ソースコードに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; 

}
于 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 に答える