C#中的SqlCommand更新不了数据库里面的数据

JesseInLY 2013-12-02 09:46:26
使用的SqlCommand的ExecuteNonQuery()
dialog显示修改了一条数据
但是查看数据库,并没有更新数据
直接使用sql查询语句能够向数据库里插入数据
using (SqlConnection conn = new SqlConnection(connectionString))
{
// selectSqlString为sql语句 :"insert stu_cour_conn(stu_id,cour_id) values('"
//+user_id + "','" + cour_id + "')"
SqlCommand cmd = new SqlCommand(selectSqlString,conn);
try
{
if (conn.State == ConnectionState.Closed)
{
conn.Open();
int i = cmd.ExecuteNonQuery();
MessageBox.Show(string.Format("成功修改{0}条记录", i));
conn.Close();
}
}
catch(Exception ex){
MessageBox.Show(string.Format("操作失败:{0}", ex.Message));
}
}
...全文
458 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yancey_Wu 2014-01-12
  • 打赏
  • 举报
回复
我也遇到同样的问题了,LZ是怎么解决的呢?
JesseInLY 2013-12-02
  • 打赏
  • 举报
回复
引用 18 楼 danding_ge 的回复:
[quote=引用 16 楼 u012842529 的回复:] [quote=引用 13 楼 danding_ge 的回复:] connectionString呢?
使用的是系统配置生成的字符串

<connectionStrings>
        
        <add name="CourseSystemApplicationFin.Properties.Settings.CourseSystemDBConnectionString1"
            connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\CourseSystemDB.mdf;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
[/quote]是这样的?我不太懂sql server,但是我会mysql,不是应该设置数据库的权限名,密码,IP,table以及编码方式等等嘛[/quote]恩 , 程序运行时使用的数据库在"debug/bin"目录下面,修改的也是这里面的数据,但每次运行程序,都会将项目目录下面的数据库文件复制到"debug/bin"目录下面,导致使用的数据库又变成以前的数据库了
公西雒 2013-12-02
  • 打赏
  • 举报
回复
引用 16 楼 u012842529 的回复:
[quote=引用 13 楼 danding_ge 的回复:] connectionString呢?
使用的是系统配置生成的字符串

<connectionStrings>
        
        <add name="CourseSystemApplicationFin.Properties.Settings.CourseSystemDBConnectionString1"
            connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\CourseSystemDB.mdf;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
[/quote]你这个根本没有你database的名字,你怎么可能加的进去。
JesseInLY 2013-12-02
  • 打赏
  • 举报
回复
引用 15 楼 u010361303 的回复:
会不会是你每次运行程序,都将数据库重新生成到bin的目录下了,其实操作都正确,每次数据库都重新覆盖了,你觉得没成功。
我使用的是.mdf文件,属性选择的是如果较新则复制。 生成解决方案时项目目录下面的数据库被复制到"bin"目录下,运行程序时使用的是"bin"目录下面的数据库, 而我查询时用到的是项目目录下面的数据库,也就是没有更新的数据库。 结果在舍友那找到方法,就是在程序运行Main方法里面添加了几行代码,如下:
string dataDir = AppDomain.CurrentDomain.BaseDirectory;
            if (dataDir.EndsWith(@"\bin\Debug\") || dataDir.EndsWith(@"\bin\Release\"))
            {
                dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
                AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
            }
然后就能行了。 不过不太懂代码的意思。
公西雒 2013-12-02
  • 打赏
  • 举报
回复
string constr = "server=.;database=myschool;integrated security=SSPI";
            //string constr = "server=.;database=myschool;uid=sa;pwd=sa";
            //string constr = "data source=.;initial catalog=myschool;user id=sa;pwd=sa";
            SqlConnection con = new SqlConnection(constr);
            //con.ConnectionString = constr;
公西雒 2013-12-02
  • 打赏
  • 举报
回复
引用 16 楼 u012842529 的回复:
[quote=引用 13 楼 danding_ge 的回复:] connectionString呢?
使用的是系统配置生成的字符串

<connectionStrings>
        
        <add name="CourseSystemApplicationFin.Properties.Settings.CourseSystemDBConnectionString1"
            connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\CourseSystemDB.mdf;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
[/quote]是这样的?我不太懂sql server,但是我会mysql,不是应该设置数据库的权限名,密码,IP,table以及编码方式等等嘛
灬浪子灬 2013-12-02
  • 打赏
  • 举报
回复
引用 16 楼 u012842529 的回复:
[quote=引用 13 楼 danding_ge 的回复:] connectionString呢?
使用的是系统配置生成的字符串

<connectionStrings>
        
        <add name="CourseSystemApplicationFin.Properties.Settings.CourseSystemDBConnectionString1"
            connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\CourseSystemDB.mdf;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
[/quote]
JesseInLY 2013-12-02
  • 打赏
  • 举报
回复
引用 13 楼 danding_ge 的回复:
connectionString呢?
使用的是系统配置生成的字符串

<connectionStrings>
        
        <add name="CourseSystemApplicationFin.Properties.Settings.CourseSystemDBConnectionString1"
            connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\CourseSystemDB.mdf;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
u010361303 2013-12-02
  • 打赏
  • 举报
回复
会不会是你每次运行程序,都将数据库重新生成到bin的目录下了,其实操作都正确,每次数据库都重新覆盖了,你觉得没成功。
圣光麦造 2013-12-02
  • 打赏
  • 举报
回复
引用 9 楼 u012842529 的回复:
[quote=引用 6 楼 shengguang1587 的回复:]

using (SqlConnection conn = new SqlConnection(connectionString))
{
 string selectSqlString = insert into stu_cour_conn(stu_id,cour_id)     values('"+user_id+"','"+cour_id+"');
        SqlCommand cmd = new SqlCommand(selectSqlString,conn);
try
{
        if (conn.State == ConnectionState.Closed)
        {
            conn.Open();
            int i = cmd.ExecuteNonQuery();
            MessageBox.Show(string.Format("成功修改{0}条记录", i));
            conn.Close();
        }
}
        catch(Exception ex)
        {
            MessageBox.Show(string.Format("操作失败:{0}", ex.Message));
        }
}
//应该是sql语句错误 INSERT INTO 表名(列1,列2,列3) VALUES(值1,值2,值3); 
两者都试过,查询语句都行,程序里面都不行[/quote] 设置一个断点调试 或者你直接打印出还是什么类型的异常 这样大家才好帮你去分析
公西雒 2013-12-02
  • 打赏
  • 举报
回复
connectionString呢?
hanfeng_st 2013-12-02
  • 打赏
  • 举报
回复
conn.Open(); SqlCommand cmd = new SqlCommand(selectSqlString,conn); int i = cmd.ExecuteNonQuery();
JesseInLY 2013-12-02
  • 打赏
  • 举报
回复
引用 10 楼 danding_ge 的回复:
[quote=引用 4 楼 u012842529 的回复:] [quote=引用 1 楼 caozhy 的回复:] catch(Exception ex) 报什么错? 如果是SqlException,检查sql,比如是否写错了表名,用错了数据类型,或者有非null字段没有指定值,主键重复等等。
程序没有跑到catch里面,输出的就是“成功修改1条记录”[/quote]还要弱弱的问一下你是什么数据库。。[/quote]微软的sql server 程序在vs里面写的
公西雒 2013-12-02
  • 打赏
  • 举报
回复
引用 4 楼 u012842529 的回复:
[quote=引用 1 楼 caozhy 的回复:] catch(Exception ex) 报什么错? 如果是SqlException,检查sql,比如是否写错了表名,用错了数据类型,或者有非null字段没有指定值,主键重复等等。
程序没有跑到catch里面,输出的就是“成功修改1条记录”[/quote]还要弱弱的问一下你是什么数据库。。
JesseInLY 2013-12-02
  • 打赏
  • 举报
回复
引用 6 楼 shengguang1587 的回复:

using (SqlConnection conn = new SqlConnection(connectionString))
{
 string selectSqlString = insert into stu_cour_conn(stu_id,cour_id)     values('"+user_id+"','"+cour_id+"');
        SqlCommand cmd = new SqlCommand(selectSqlString,conn);
try
{
        if (conn.State == ConnectionState.Closed)
        {
            conn.Open();
            int i = cmd.ExecuteNonQuery();
            MessageBox.Show(string.Format("成功修改{0}条记录", i));
            conn.Close();
        }
}
        catch(Exception ex)
        {
            MessageBox.Show(string.Format("操作失败:{0}", ex.Message));
        }
}
//应该是sql语句错误 INSERT INTO 表名(列1,列2,列3) VALUES(值1,值2,值3); 
两者都试过,查询语句都行,程序里面都不行
公西雒 2013-12-02
  • 打赏
  • 举报
回复
引用 5 楼 u012842529 的回复:
[quote=引用 2 楼 danding_ge 的回复:]
insert stu_cour_conn(stu_id,cour_id) values('" 
+user_id + "','" + cour_id + "')"
这句的问题吧! 貌似是
insert into stu_cour_conn(stu_id,cour_id) values('" 
+user_id + "','" + cour_id + "');"
这么写。
这两句Sql试过,都能够向数据库插入数据 [/quote]受教
JesseInLY 2013-12-02
  • 打赏
  • 举报
回复
引用 3 楼 feiyun0112 的回复:
看看连接字符串,修改和查看是不是同一个数据库? ***************************************************************************** 签名档: http://feiyun0112.cnblogs.com/
字符串是这个:Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\CourseSystemDB.mdf;Integrated Security=True 怎么查看 查询和修改是不是同一数据库
圣光麦造 2013-12-02
  • 打赏
  • 举报
回复

using (SqlConnection conn = new SqlConnection(connectionString))
{
 string selectSqlString = insert into stu_cour_conn(stu_id,cour_id)     values('"+user_id+"','"+cour_id+"');
        SqlCommand cmd = new SqlCommand(selectSqlString,conn);
try
{
        if (conn.State == ConnectionState.Closed)
        {
            conn.Open();
            int i = cmd.ExecuteNonQuery();
            MessageBox.Show(string.Format("成功修改{0}条记录", i));
            conn.Close();
        }
}
        catch(Exception ex)
        {
            MessageBox.Show(string.Format("操作失败:{0}", ex.Message));
        }
}
//应该是sql语句错误 INSERT INTO 表名(列1,列2,列3) VALUES(值1,值2,值3); 
JesseInLY 2013-12-02
  • 打赏
  • 举报
回复
引用 2 楼 danding_ge 的回复:
insert stu_cour_conn(stu_id,cour_id) values('" 
+user_id + "','" + cour_id + "')"
这句的问题吧!
貌似是
insert into stu_cour_conn(stu_id,cour_id) values('" 
+user_id + "','" + cour_id + "');"
这么写。
这两句Sql试过,都能够向数据库插入数据
JesseInLY 2013-12-02
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
catch(Exception ex) 报什么错? 如果是SqlException,检查sql,比如是否写错了表名,用错了数据类型,或者有非null字段没有指定值,主键重复等等。
程序没有跑到catch里面,输出的就是“成功修改1条记录”
加载更多回复(3)

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧