private int getuserid(String username){
SqlConnection con = new SqlConnection(_conString);
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT USER_ID from tblUser where USERNAME ='" username "'";
int locid = Convert.ToInt32(cmd.CommandText);
return locid;
}
大家好,你知道如何在變數中分配 user_id 的值并回傳它。我試過了,但我不確定它是否好。
uj5u.com熱心網友回復:
您需要實際打開連接并運行命令。
您還應該采取措施防止 sql 注入并在發生例外時保持連接打開。這段代碼解決了所有三個問題:
private int getuserid(String username)
{
using (var con = new SqlConnection(_conString))
using (var cmd = new SqlCommand("SELECT user_id FROM tblUser WHERE username = @username", con))
{
// Use actual column type and length from the database
cmd.Parameters.Add("@username", SqlDbType.NVarChar, 30).Value = username;
con.Open();
return (int)cmd.ExecuteScalar();
}
}
最后,您需要定義如果您的WHERE子句沒有匹配項,您希望發生什么。現在會有一個例外,但對于問題中的原始代碼也是如此,所以據我目前所知,這就是您真正想要做的。
uj5u.com熱心網友回復:
try
using (var conn = new SqlConnection(SomeConnectionString))
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "SELECT USER_ID from tblUser where USERNAME =@username";
cmd.Parameters.Add("@username", SqlDbType.NVarChar, 30).Value = username;
using (var reader = cmd.ExecuteReader())
{
if (reader.Read())
{
int locaid = Convert.ToInt32(reader.GetOrdinal("USER_ID"));
}
}
}
或者
int locaid = (int) cmd.ExecuteScalar();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/369605.html
標籤:mysql 网站 sql-server 数据库 网络
