繁体   English   中英

将记录从asp.net插入SQL Server数据库期间出错

[英]Error during insert of record from asp.net into SQL Server database

在将数据插入SQL Server数据库期间出现此错误

这是我在按钮单击事件中的代码

try
{
    string ConnString = "Data Source=(LocalDB)\v11.0;AttachDbFilename=\\MOD03-PC\\Share Folder mod03\\amts\\amtsfuelconsuption\\AmtsFuelConsumption\\AmtsFuelConsumption\\App_Data\\AmtsDatabse.mdf;Integrated Security=True;Connect Timeout=900,providerName=System.Data.SqlClient";  
    SqlConnection con = new SqlConnection(@ConnString);

    SqlCommand cmd = new SqlCommand("InsertBodyTypeMaster", con);
    cmd.CommandTimeout = 0;
    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.AddWithValue("bodytypename", txtBTname.Text.ToString());

    con.Open();

    int k = cmd.ExecuteNonQuery();

    if (k != 0)
    {
        lblmessage.Text = "Record Inserted Succesfully into the Database";
        lblmessage.ForeColor = System.Drawing.Color.CornflowerBlue;
    }

    con.Close();
    con.Dispose();
}
catch (Exception ex)
{
    lblmessage.Text = ex.ToString();
}

我发现有些错误;

  • 如前所述,您需要Connect Timeout=900,更改为Connect Timeout=900;
  • 您需要删除providerName=System.Data.SqlClient部分,因为您已经将.NET提供程序用于SQL Server。 .NET的提供程序名称基于实现类是隐式的, 不需要在连接字符串中指定。 删除时,您将不需要; Connect Timeout=900;结束时Connect Timeout=900; 不再
  • 使用using语句自动处理连接和命令,而不是手动调用CloseDispose方法。
  • 尽量不要使用AddWithValue 有时它可能会产生意外和令人惊讶的结果 使用Add方法重载来指定您的参数类型及其大小。

最终连接字符串应为;

string ConnString = "Data Source=(LocalDB)\v11.0,AttachDbFilename=\\MOD03-PC\\Share Folder mod03\\amts\\amtsfuelconsuption\\AmtsFuelConsumption\\AmtsFuelConsumption\\App_Data\\AmtsDatabse.mdf;Integrated Security=True;Connect Timeout=900"; 

连接字符串中的连接超时属性中的900后面有逗号而不是分号。

因为您的连接字符串很奇怪。 删除那些; 并与替换它们, 另外,请确保正确拼写它们。 应该像

string ConnString = "Data Source=(LocalDB)\v11.0,AttachDbFilename=\\MOD03-PC\\Share Folder mod03\\amts\\amtsfuelconsuption\\AmtsFuelConsumption\\AmtsFuelConsumption\\App_Data\\AmtsDatabse.mdf,Integrated Security=True,Connect Timeout=900;providerName=System.Data.SqlClient"; 

还有下面一行

SqlConnection con = new SqlConnection(@ConnString); 

它应该是

SqlConnection con = new SqlConnection(ConnString);

您正在try块内调用Dispose() ,这是一个大错误,如下所示。 使用Using(...)阻止(或) finally阻止

try
{
 ....
    con.Close();
    con.Dispose();
}

应该

finally
{
    con.Close();
    con.Dispose();
}

看起来是时候开始阅读文档了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM