如何在c#中编写插入查询?

时间:2012-03-31 09:57:56

标签: c# sql-server

我正在开发一个c#web应用程序...我想将文本框中的数据插入到数据库中......我已经编写了查询但是它没有工作:

string insertquery = 
    @"INSERT INTO [LocationInfo]([LocationIP], [LocationName]) 
      VALUES ('" + TextBox2.Text + "','" + TextBox3.Text + "') 
      WHERE LocationID=null";

SqlCommand cmd = new SqlCommand(insertquery, sqlcon_QOEMetrices);
cmd.ExecuteNonQuery();

sqlcon_QOEMetrices是我的数据库连接对象...

如果语法错误或任何语句丢失,请告诉我.........

4 个答案:

答案 0 :(得分:2)

您可以像下面的命令一样编写查询

SqlCommand comm = new SqlCommand("INSERT INTO desg VALUES (@txtsno, @txtdesg, @txtbasic)", connection);

your_db.Open();
try {
    comm.Parameters.AddWithValue("@txtsno", txtsno.Text.Trim());
    comm.Parameters.AddWithValue("@txtdesg", txtdesg.Text.Trim());
    comm.Parameters.AddWithValue("@txtbasic", txtbasic.Text.Trim());
    comm.ExecuteNonQuery();
    comm.Dispose();
    comm = null;
}
catch(Exception ex)
{
    throw new Exception(ex.ToString(), ex);
}
finally
{
    your_db.Close();
}

答案 1 :(得分:1)

您不应该将SQL查询与表单中的直接值连接起来。

您的ADO.NET代码如下所示:

        string query = "INSERT INTO [LocationInfo]([LocationIP], [LocationName])" +
                       "VALUES (@locIP, @locName)";

        SqlCommand cmd = new SqlCommand(query, sqlcon_QOEMetrices);
        cmd.Parameters.AddWithValue("@locIP", TextBox2.Text);
        cmd.Parameters.AddWithValue("@locName", TextBox3.Text);        

        try
        {
            sqlcon_QOEMetrices.Open();

            cmd.ExecuteNonQuery();
        }
        catch (Exception)
        {
            throw;
        }
        finally
        {
            sqlcon_QOEMetrices.Close();
        }

答案 2 :(得分:0)

省略

 WHERE LocationID=null

更喜欢SQLCommand和参数。不使用UI控件值构建字符串。

答案 3 :(得分:0)

使用LocationID IS NULL代替LocationID = NULL,是的。你的查询很容易受到其他人提到的SQL注入攻击。