使用参数从C#中的文本框插入数据库
我是c#的新手。我正在尝试将文本框中的值插入数据库中的表中 表名:地址 字段:名称(varchar(50)), 年龄(整数), 城市(nchar(10)) 当我尝试从数据库中检索值时,它工作得非常好。 这是我的密码。请帮我纠正一下使用参数从C#中的文本框插入数据库,c#,sql,C#,Sql,我是c#的新手。我正在尝试将文本框中的值插入数据库中的表中 表名:地址 字段:名称(varchar(50)), 年龄(整数), 城市(nchar(10)) 当我尝试从数据库中检索值时,它工作得非常好。 这是我的密码。请帮我纠正一下 string s = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User I
string s = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True";
SqlConnection a = new SqlConnection(s);
a.Open();
SqlCommand comm = new SqlCommand("INSERT INTO [address](name,age,city) VALUES(@na,@ag,@ci)");
string na = textBox1.Text;
int ag = int.Parse(textBox2.Text);
string ci = textBox3.Text;
comm.Parameters.Add("@na", System.Data.SqlDbType.VarChar,50).Value = na;
comm.Parameters.Add("@ag", System.Data.SqlDbType.Int).Value = ag;
comm.Parameters.Add("@ci", System.Data.SqlDbType.NChar,10).Value = ci;
comm.Connection = a;
comm.ExecuteNonQuery();
MessageBox.Show("okay");
a.Close();
这些值不会反映在数据库中。请尝试使用以下代码:
string connectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True";
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand insertCommand = connection.CreateCommand())
{
insertCommand.CommandText = "INSERT INTO address(name,age,city) VALUES (@na,@ag,@ci)";
insertCommand.Parameters.Add("@na", na);
insertCommand.Parameters.Add("@ag", ag);
insertCommand.Parameters.Add("@ci", ci);
insertCommand.Connection.Open();
insertCommand.ExecuteNonQuery();
}
}
请尝试使用以下代码:
string connectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True";
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand insertCommand = connection.CreateCommand())
{
insertCommand.CommandText = "INSERT INTO address(name,age,city) VALUES (@na,@ag,@ci)";
insertCommand.Parameters.Add("@na", na);
insertCommand.Parameters.Add("@ag", ag);
insertCommand.Parameters.Add("@ci", ci);
insertCommand.Connection.Open();
insertCommand.ExecuteNonQuery();
}
}
在我的脑海中,我要说的是,这是一个文件系统权限问题,因为他附加了一个SQLExpress文件。这只是一个猜测,但让我们看看它是否成立@AustinSalonen我没有收到任何错误,但是这些值没有反映在database.comm.Parameters.Add(“@na”,System.Data.SqlDbType.VarChar,50)中。Value=na;您可能需要尝试放置一个结束括号。comm.Parameters.Add(“@na”,System.Data.SqlDbType.VarChar,50).Value=na);简:那会有两个右括号。@JaneDoe我怎么能在没有左括号的情况下添加右括号呢。在我的脑海中,我想说这是文件系统权限问题,因为他正在附加一个SQLExpress文件。这只是一个猜测,但让我们看看它是否成立@AustinSalonen我没有收到任何错误,但是这些值没有反映在database.comm.Parameters.Add(“@na”,System.Data.SqlDbType.VarChar,50)中。Value=na;您可能需要尝试放置一个结束括号。comm.Parameters.Add(“@na”,System.Data.SqlDbType.VarChar,50).Value=na);Jane:那将构成两个结束括号。@JaneDoe我如何添加一个结束括号而不添加一个开始括号。为什么要使用关闭
中的SqlConnection?在治疗结束时使用call dispose它正在工作。插入的数据存在于数据库中,但不会更新数据库资源管理器中的表。当我使用select查询时,我得到了新的值。我可以知道为什么表没有更新吗?你必须在你的Exploratory中刷新你的表。你尝试过它不工作。还有一件事,数据只是暂时可用。当我关闭解决方案并再次打开它时,新插入的行将消失。我们需要做一些类似于PERSIST的事情吗?为什么要使用
关闭中的SqlConnection?在治疗结束时使用call dispose它现在可以工作了。插入的数据存在于数据库中,但不会更新数据库资源管理器中的表。当我使用select查询时,我得到了新的值。我可以知道为什么表没有更新吗?你必须在你的Exploratory中刷新你的表。你尝试过它不工作。还有一件事,数据只是暂时可用。当我关闭解决方案并再次打开它时,新插入的行将消失。我们有没有像坚持这样的事情要做?