【发布时间】:2018-02-20 11:55:15
【问题描述】:
是否可以从 sql 命令返回布尔值 - 然后在 C# 中使用它?
我目前有一个数据库,我在其中插入条目。我想在插入之前知道该条目是否存在,如果存在则做一些事情......
private void create_user_Click(object sender, EventArgs e)
{
int exist;
using (DbConnection connection = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\toilet\source\repos\WindowsFormsApp2\WindowsFormsApp1\Database1.mdf;Integrated Security=True"))
{
connection.Open();
using (DbCommand command = new SqlCommand("WHERE EXIST (SELECT id FROM [information] WHERE id == @given_id)"))
{
command.Parameters.Add(new SqlParameter("@given_id", create_user_username_textbox.Text));
command.Connection = connection;
exist = command.ExecuteNonQuery();
}
MessageBox.Show(Convert.ToString(exist));
}
//login_screen login = new login_screen();
//this.Hide();
//login.ShowDialog();
//this.Close();
}
这样做会在SqlCommand 中的WHERE 附近出现语法错误
【问题讨论】:
-
是的,但是这里没有有效的 SQL 命令,只是查询的一部分。
-
X-Y ...您是否要进行“upsert”? (如果存在则更新,否则插入)
-
@Liam OP 似乎对 SQL 不太熟悉。
-
将您的查询更改为
SELECT 1 FROM [information] WHERE id = @given_id。检查它是否返回 1。如果不是,则为 false。 -
为什么你想返回一个布尔值?如果查询返回单个 ID,则您已经知道存在现有记录。您可能不需要甚至需要向服务器返回任何内容 - 您可以编写适当的 MERGE 或 UPDATE 或 INSERT 语句
标签: c# sql database ado.net sqlcommand