关于c#连接SQL server的问题。。求大神解答! sql serverc# 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你调试一下,把sql变量的值拿出来,去数据库执行一下。string sql = "INSERT INTO dbo.1([姓名],[职务],[任职日期],[离职日期]) values(a,b,c,d)";改成string sql = "INSERT INTO dbo.1([姓名],[职务],[任职日期],[离职日期]) values('"+a+"','"+b+"','"+c+"','"+d+"')"; 果然很新,问题一堆.private void xx(SqlConnection conn,string a,string b,string c,string d){ string sql = "INSERT INTO dbo.tabname([姓名],[职务],[任职日期],[离职日期]) values(@a,@b,@c,@d)"; conn.Open(); try { SqlCommand cmd = new SqlCommand(sql, conn); AddParameter(cmd, "@a", a); AddParameter(cmd, "@b", b); AddParameter(cmd, "@c", c); AddParameter(cmd, "@d", d); cmd.ExecuteNonQuery(); } finally { conn.Close(); }}private void AddParameter(SqlCommand cmd, string name, string a){ DbParameter p = cmd.CreateParameter(); p.ParameterName = name; p.DbType = DbType.String; p.Value = a; p.Direction = ParameterDirection.Input; cmd.Parameters.Add(p);} SqlCommand cmd = new SqlCommand(sql, conn);命令要执行。cmd.ExecuteNonQuery(); 确定sql语句么有问题。你的cmd 什么都么有执行,当让不对了。http://msdn.microsoft.com/zh-cn/library/System.Data.SqlClient.SqlCommand(v=vs.110).aspx 原来的问题:string sql = "INSERT INTO dbo.1([姓名],[职务],[任职日期],[离职日期]) values(a,b,c,d)";这a,b,c,d是字符串变量啊,怎么跑到一个字符串常量sql里面去了。。而且cmd命令么执行。1楼拼接字符串的形式虽然暂时解决了问题,但又引发了SQL注入的安全隐患。2楼改成参数化查询,解决了sql语句的问题,并添加了cmd.ExecuteNonQuery();算是真正解决了问题。总得数据库操作流程不熟悉:【打开数据库】-【实例化查询字符串并附加参数】-【执行查询】-【判断执行结果和处理结果集】-【关闭数据库】 绑定DataGridView控件连接数据库呈现数据 private void Form1_Load(object sender, EventArgs e) { SqlDataAdapter sda = new SqlDataAdapter(//创建SqlDataAdapter对象 "select * from tb_student", "server=WPPP-MOUI877YVW\\MROWW;database=db_test;Trusted_Connection=true"); DataSet ds = new DataSet();//创建数据集DataSet对象 sda.Fill(ds);//调用SqlDataAdapter对象的Fill()方法填充数据集 dataGridView1.DataSource = ds.Tables[0];//将数据集绑定到DataGridView1控件 } SqlCommand cmd = new SqlCommand(sql, conn);cmd.ExecuteNonQuery();否则你拼接好了sql语句不执行,就相当于白忙乎了 c#中有小数点数的相乘用什么数据类型啊???? 数据打印! 关于对象是引用类型 哈希码 文本框字符离边框的间距和gdi+中drawstring能调到一样吗? 如何判断一个进程在管理员用户下运行,还是在PowerUser用户下运行 帮我看看!为什么只显示一个标签! 神啊(你在线吗?),救救我吧! WebForm中如何实现窗口间数据的传递? 怎么规定选中的datagrid中只读的行不变成的灰色??散分!! 请问关于updclient的多目标广播的一些问题............. 一个超级简单文件操作怎么会有错?
string sql = "INSERT INTO dbo.1([姓名],[职务],[任职日期],[离职日期]) values(a,b,c,d)";
改成
string sql = "INSERT INTO dbo.1([姓名],[职务],[任职日期],[离职日期]) values('"+a+"','"+b+"','"+c+"','"+d+"')";
private void xx(SqlConnection conn,string a,string b,string c,string d)
{
string sql = "INSERT INTO dbo.tabname([姓名],[职务],[任职日期],[离职日期]) values(@a,@b,@c,@d)";
conn.Open();
try
{
SqlCommand cmd = new SqlCommand(sql, conn);
AddParameter(cmd, "@a", a);
AddParameter(cmd, "@b", b);
AddParameter(cmd, "@c", c);
AddParameter(cmd, "@d", d);
cmd.ExecuteNonQuery();
}
finally
{
conn.Close();
}
}private void AddParameter(SqlCommand cmd, string name, string a)
{
DbParameter p = cmd.CreateParameter();
p.ParameterName = name;
p.DbType = DbType.String;
p.Value = a;
p.Direction = ParameterDirection.Input;
cmd.Parameters.Add(p);
}
命令要执行。cmd.ExecuteNonQuery();
你的cmd 什么都么有执行,当让不对了。
http://msdn.microsoft.com/zh-cn/library/System.Data.SqlClient.SqlCommand(v=vs.110).aspx
string sql = "INSERT INTO dbo.1([姓名],[职务],[任职日期],[离职日期]) values(a,b,c,d)";
这a,b,c,d是字符串变量啊,怎么跑到一个字符串常量sql里面去了。。而且cmd命令么执行。1楼拼接字符串的形式虽然暂时解决了问题,但又引发了SQL注入的安全隐患。2楼改成参数化查询,解决了sql语句的问题,并添加了cmd.ExecuteNonQuery();算是真正解决了问题。总得数据库操作流程不熟悉:
【打开数据库】-【实例化查询字符串并附加参数】-【执行查询】-【判断执行结果和处理结果集】-【关闭数据库】
private void Form1_Load(object sender, EventArgs e)
{
SqlDataAdapter sda = new SqlDataAdapter(//创建SqlDataAdapter对象
"select * from tb_student",
"server=WPPP-MOUI877YVW\\MROWW;database=db_test;Trusted_Connection=true");
DataSet ds = new DataSet();//创建数据集DataSet对象
sda.Fill(ds);//调用SqlDataAdapter对象的Fill()方法填充数据集
dataGridView1.DataSource = ds.Tables[0];//将数据集绑定到DataGridView1控件
}
cmd.ExecuteNonQuery();
否则你拼接好了sql语句不执行,就相当于白忙乎了