现在,我的教授要求我使用ADO.NET实现一个案例研究,将数据保存到SQL Server中。我已经在SQL Server中创建了一个数据库和表,我试图通过C#ADO.NET在Visual Studio中创建一些表单。我根据YouTube视频写道。但我不知道为什么我无法成功将数据保存到数据库。
我编写代码时的结果。
任何帮助将不胜感激。
namespace casestudy
{
public partial class Form2 : Form
{
SqlConnection vcon2 = new SqlConnection(@"Data Source=SOPHIA-PC\SQLEXPRESS;Initial Catalog=casestudy;Integrated Security=True");
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
try
{
vcon2.Open();
}
catch (Exception ex)
{
MessageBox.Show("error.occured" + ex.Message);
this.Dispose();
}
}
private void button1_Click(object sender, EventArgs e)
{
string vsql = string.Format("insert into Calluser values ({0}, '{1}', '{2}', {3})", Int32.Parse(txtUserID.Text), txtFName.Text, txtLName.Text, Int32.Parse(txtZoneID.Text));
SqlCommand vCom = new SqlCommand(vsql, vcon2);
try
{
vCom.ExecuteNonQuery();
vCom.Dispose();
MessageBox.Show("The User Information stored.");
txtZoneID.Text = "";
txtLName.Text = "";
txtFName.Text = "";
txtUserID.Text = "";
txtUserID.Focus();
}
catch (Exception ex)
{
MessageBox.Show("error.occured" + ex.Message);
this.Dispose();
}
}
}
}
答案 0 :(得分:0)
您是否可以添加检查以查看连接是否实际打开,如果在您致电ExecuteNonQuery()
之前未重新打开连接
if (vcon2.State != ConnectionState.Open)
{
vcon2.Open();
}
vCom.ExecuteNonQuery();
答案 1 :(得分:0)
打开应用程序或表单时打开连接可能不是最好的方法。您希望在执行sql之前立即打开连接并尽快关闭它。
话虽如此,我建议从Form2_Load事件中删除代码。并在button1_Click或您从那里调用的其他方法中执行所有操作。更好的方法是拥有一个为您的应用程序提供数据访问的类或组件。还使用using语句,因为它将确保即使抛出异常也会处置资源。
using (SqlConnection connection = new SqlConnection(@"Data Source=SOPHIA-PC\SQLEXPRESS;Initial Catalog=casestudy;Integrated Security=True");))
{
SqlCommand command = new SqlCommand(vsql, connection);
command.Connection.Open();
command.ExecuteNonQuery();
}
有关使用声明的一些信息: