为文件abc附加一个自动命名的数据库的尝试失败了[英] An attempt to attach an auto-named database for file abc failed

问题描述

我收到错误"尝试为文件 abc 附加自动命名的数据库失败.存在同名的数据库,或无法打开指定的文件,或者它位于 UNC 共享上"

private void btnsubmit_Click(object sender, EventArgs e)
        {
           
            String connectionString = "Data Source=USER\\SQLEXPRESS;Integrated Security=true; AttachDbFilename=abc;User Instance=true;";
            SqlConnection thisConnection = new SqlConnection(connectionString);
         
            

            thisConnection.Open();

            String thisQuery = "INSERT INTO abc (ID, Name, ContactNo, Email, Address) VALUES (''" + txtid.Text + "'', ''" + txtname.Text + "'', ''" + txtcontact.Text + "'', ''" + txtemail.Text + "'', ''" + txtaddress.Text + "'')";
            SqlCommand thisCommand = new SqlCommand(thisQuery, thisConnection);
            SqlCommand cmd = new SqlCommand();

            thisCommand.ExecuteNonQuery();
            thisConnection.Close();

        }

推荐答案

您没有指定任何错误,但我认为您由于查询而出错

您在 DB 中的 ID 列是整数类型,并且您正在像字符串一样发送它
改成这样==>
String thisQuery = "插入 abc(ID、姓名、ContactNo、电子邮件、地址)值 (" + txtid.Text + ", '" + txtname.Text + "', '" + txtcontact.Text+ "', '" + txtemail.Text + "', '" + txtaddress.Text + "')";

或者如果您的 ID 列是身份(即自动增量字段),则无需在查询中发送它

String thisQuery = "插入 abc(姓名、联系人编号、电子邮件、地址)值 ('" + txtname.Text + "', '" + txtcontact.Text + "', '" + txtemail.Text+ "', '" + txtaddress.Text + "')";


以这种方式将参数发送到查询不是一个好习惯,因为会有更大的 sql 注入机会,所以你应该始终使用 SQL 参数发送到查询

我认为代码中的数据库连接问题没有错误可以将错误消息发送给我吗

将数据库文件保留在部署文件夹中.并在您的连接字符串中添加''database = abc''.这会阻止 SQL 服务器创建自动命名的数据库

本文地址:https://www.itbaoku.cn/post/1394790.html