Я пытаюсь создать частную систему сообщений.Извлечение идентификатора только с именем пользователя
Что я до сих пор. - проверка наличия игрока с именем из текстового поля, если нет, появляется ошибка.
Теперь я пытаюсь вставить его в стол. Проблема заключается в том, что таблица имеет 2 colums
to_user_id
from_user_id
И becasuse Я использую текстовое поле для ввода имени пользователя, я не как получить to_user_id из таблицы пользователей, имея только имя.
это мой код
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connect"].ToString());
conn.Open();
SqlCommand cmdd = new SqlCommand();
cmdd.CommandText = "select * from [users]";
cmdd.Connection = conn;
SqlDataReader rd = cmdd.ExecuteReader();
while (rd.Read())
{
if (rd[1].ToString() == TextBox_To.Text)
{
flag = false;
break;
}
}
conn.Close();
if (flag == true)
{
Label1.Visible = true;
Label1.Text = "User does not exist";
}
else if(flag == false)
{
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Connect"].ToString()))
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = @"INSERT INTO messages (message_title, message_content, to_user_id, from_user_id, message_date)
VALUES (@title, @content, @to, @from, @date)";
cmd.Parameters.AddWithValue("@title", TextBox_Title.Text);
cmd.Parameters.AddWithValue("@content", TextBox_Msg.Text.Replace("\n", "<br/>"));
cmd.Parameters.AddWithValue("@to", TextBox_To.Text);
cmd.Parameters.AddWithValue("@date", DateTime.Now);
cmd.Parameters.AddWithValue("@from", Session["id"].ToString());
con.Open();
cmd.ExecuteNonQuery();
}
}
Конечно, я получил ошибку
Conversion failed when converting the nvarchar value 'username' to data type int.
@edit,
@cordan Я попытался это
DECLARE @user_id = (SELECT id FROM users WHERE [email protected]);
INSERT INTO messages (message_title, message_content, to_user_id, from_user_id, message_date)
VALUES (@title, @content, @user_id, @from, @date);
cmd.Parameters.AddWithValue("@to", TextBox_To.Text);
получил эту ошибку
Incorrect syntax near '='.
Must declare the scalar variable "@user_id".
вы рассмотрели поиск пользователя из таблицы пользователей? то есть «SELECT id FROM users WHERE username = @ username», а затем используя результат этого запроса? – yaakov
@codran Я не уверен, как поместить этот проверенный id в переменную, чтобы затем использовать его как 'cmd.Parameters.AddWithValue ("@ to", retrieved_id); – Harugawa
SET @user = (SELECT ID FROM Users WHERE имя_пользователя = @user_name) –