我的数据库连接出了什么问题

本文关键字:什么 问题 数据库连接 我的 | 更新日期: 2023-09-27 18:34:23

我正在尝试向我的数据库发送此查询,但它一直让我输入无效,我不知道出了什么问题?

private void button1_Click(object sender, EventArgs e)
{
    string connectionString =@"Data Source=.'SQLEXPRESS;AttachDbFilename=|DataDirectory|'Database1.mdf;Integrated Security=True;User Instance=True";
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        using (SqlCommand command = new SqlCommand(
                     "INSERT INTO Customer(Name,Telephone,Address,[Register Date]) VALUES(" + v_name + "," + telephone + "," + address + "," + date + ")", connection))
        {
            try
            {
                connection.Open();
                string result = (string)command.ExecuteScalar();
                MessageBox.Show("Region = " + result);
                MessageBox.Show("You have Registered Succesfully");
            }
            catch(Exception ex)
            {
                MessageBox.Show("Invalid input");
                Form1 st = new Form1();
                st.Show();
            }
        }
    }
}

我的数据库连接出了什么问题

我在您的连接中没有看到任何问题,但我看到如何执行您的命令存在问题。

ExecuteScalar返回第一列的第一行的数据。但是您的 INSERT 语句不会返回任何数据。您需要改用ExecuteNonQuery

并且应始终使用参数化查询。这种字符串串联对SQL注入攻击是开放的。

using(SqlConnection connection = new SqlConnection(connectionString))
using(SqlCommand command = connection.CreateCommand())
{
   cmd.CommandText = @"INSERT INTO Customer(Name,Telephone,Address,[Register Date]) 
                       VALUES(@name, @tel, @address, @date)";
   // Add your parameter values with SqlParameterCollection.Add() method.
   try
   {
       connection.Open();
       command.ExecuteNonQuery();
   }
   catch(Exception ex)
   {
        //
   }
}

我认为错误出在您的QRY中。如果 db 字段是 nvarchar,则 u 应该在 '' 之间传递值。您的QRY如下所示:

 "INSERT INTO Customer(Name,Telephone,Address,[Register Date]) VALUES('" + v_name + "','" + telephone + "','" + address + "','" + date + "')"