【发布时间】:2021-04-20 17:38:20
【问题描述】:
我尝试了很多方法来解决问题,但没有找到正确的答案。当点击保存按钮时,会出现以下消息;
抛出异常:System.Data.dll 中的“System.ArgumentException”
并突出显示该行
public static SqlConnection con = new SqlConnection(s);
这里是详细代码。
Connection.cs 文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Data.SqlClient;
using System.Data;
namespace IMS
{
class Connection
{
private static string s = File.ReadAllText(Application.StartupPath + "\\Connect.txt");
public static SqlConnection con = new SqlConnection(s);
}
}
我在哪里编写插入代码以在表中插入数据
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Data.SqlClient;
using System.Data;
namespace IMS
{
class insertion
{
public void InsertUser(string name, string username, string password, string email, Int16 status)
{
try
{
SqlCommand cmd = new SqlCommand("sy_InsertUser", Connection.con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@name", name);
cmd.Parameters.AddWithValue("@username", username);
cmd.Parameters.AddWithValue("@password", password);
cmd.Parameters.AddWithValue("@email", email);
cmd.Parameters.AddWithValue("@status", status);
Connection.con.Open();
if (cmd.ExecuteNonQuery()>= 1)
{
mainclass.ShowSucsMsg("User Added Successfuly");
}
Connection.con.Close();
}
catch (Exception ex)
{
Dashborad.ShowExpMsg(ex);
}
}
}
}
数据保存按钮代码
public override void savebtn_Click(object sender, EventArgs e)
{
insertion obj = new insertion();
obj.InsertUser(usnametxt.Text, usUsernametxt.Text, usPasswordtxt.Text, usEmailtxt.Text, Status);
}
App.Cofig
<appSettings>
<add key="" value="\\Connect.txt" />
</appSettings>
【问题讨论】:
-
您忘记发布连接字符串本身。该错误抱怨连接字符串。所有其他代码都不是真正相关的
-
出现异常的那一行的 s 值是多少?
-
顺便说一句,使用静态连接是一个非常的坏主意。连接是短暂的,在使用之前创建并在之后立即处理。全局连接会累积锁并导致严重的并发问题,即使有十几个用户也是如此。在事务之外获取的锁会一直保持到连接关闭。这意味着使用
con的UPDATE 操作将导致独占锁一直保持到应用程序终止。以这种方式非常很容易陷入死锁,只需在另一台机器上打开另一个实例即可 -
如果 InsertUser 方法在您打开连接后抛出异常,您忘记关闭。当您尝试再次重新打开连接时,这会导致另一个错误。搜索using语句的使用方法
-
@Russ 这是 App.Config 中的连接字符串
<connectionStrings> <add name="IMS" connectionString="Data Source=NAINASEMI-PC\SA; Initial Catalog=IMS; User ID=sa; Password=63377; Integrated Security=True;MultipleActiveResultSets=True"/> </connectionStrings>
标签: c#