黑马程序员技术交流社区
标题:
ExecuteNonQuery();问题
[打印本页]
作者:
张彪
时间:
2011-11-30 12:06
标题:
ExecuteNonQuery();问题
本帖最后由 张彪 于 2011-12-2 13:57 编辑
public static class DBConn
{
public static SqlConnection CyCon()
{
return new SqlConnection (@"Data Source=PC2011102013SPQ\SQLEXPRESS;Initial Catalog=library;Integrated Security=True");
}
// public static SqlConnection conn = new SqlConnection();
}
}
private void button1_Click(object sender, EventArgs e)
{
SqlConnection conn = Basebase.DBConn.CyCon();
DateTime date = new DateTime();
try
{
DBConn.CyCon().Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = DBConn.CyCon();
//更新数据
cmd.CommandText = "Insert borrowandback [readerid]='" + textBox1.Text + "'" +
//",[name]='" + dataGridView1.CurrentRow.Cells[0].Value.ToString() + "'" +
",[bookcode]='" + dataGridView1.CurrentRow.Cells[2].Value.ToString() + "'" +
",[borrowTime]='" + date.TimeOfDay + "'" + "'";
//",[paperType]='" + dataGridView1.CurrentRow.Cells[4].Value.ToString() + "'" +
//",[paperNum]='" + dataGridView1.CurrentRow.Cells[5].Value.ToString() + "'" +
//",[tel]='" + dataGridView1.CurrentRow.Cells[6].Value.ToString() + "'" +
//",[email]='" + dataGridView1.CurrentRow.Cells[7].Value.ToString() + "'" +
//",[createDate]='" + dataGridView1.CurrentRow.Cells[8].Value.ToString() + "'" +
//",[oper]='" + dataGridView1.CurrentRow.Cells[9].Value.ToString() + "'" + "where[id]='" + "'";
cmd.ExecuteNonQuery();
//刷新显示结果
DataSet dalibrary = new DataSet();
SqlDataAdapter dabaseInfrom = new SqlDataAdapter("Select* from borrowandback", DBConn.CyCon());
dabaseInfrom.Fill(dalibrary, "borrowandback");
//绑定数据库
dataGridView1.DataSource = dalibrary.Tables["borrowandback"];
MessageBox.Show("修改成功");
DBConn.CyCon().Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + "打开数据库失败!");
}
}
数据库连接正确为什么总是出现
QQ截图20111130120410.jpg
(16.13 KB, 下载次数: 46)
下载附件
2011-11-30 12:04 上传
作者:
王伟
时间:
2011-11-30 12:20
cmd.ExecuteNonQuery();前加上conn.open();试试
你connection连接没打开
作者:
谭显锋
时间:
2011-11-30 13:03
DBConn.CyCon().Open();
你这句代码是干嘛,打开数据库要先实例化一个SqlConnection对象,再用对象的open()打开呀。如:SqlConnection conn =new SqlConnection();
conn.open();
作者:
付炯
时间:
2011-11-30 13:46
本帖最后由 付炯 于 2011-11-30 13:46 编辑
cmd应该由conn对象利用CreateCommand()方法创建
另外没看到conn.Open()语句啊
作者:
王硕
时间:
2011-11-30 14:09
DBConn.CyCon().Open();应该改成conn.open()才对啊
作者:
邹老师
时间:
2011-11-30 14:17
DBConn.CyCon()方法中每次都创建了一个新的 SqlConnection对象,所以每次调用这个方法所返回的 连接对象都不是同一个。
可以试试这么写:
SqlConnection
conn
= DBConn.CyCon();
SqlCommand cmd = new SqlCommand("select......",
conn
);
conn
.Open();
cmd.Excute.......
conn
.close();
作者:
杨楠
时间:
2011-11-30 15:23
整出了三个connection了。。。直接conn.open()就哦了
作者:
李海龙
时间:
2011-11-30 15:25
说实话你的这个我真没太明白,你吧打开和关闭 专门建立一个类,类中定义打开 关闭方法 直接调用
我给你改上面的类 你试试
public class DBConn
{
// 数据库连接字符串
private string sql = "Data Source=PC2011102013SPQ\SQLEXPRESS;Initial Catalog=library;Integrated Security=True";
//数据库连接对象 conn
private SqlConnection conn;
///CONN对象
public SqlConnection CONN
{
get
{
if(conn==null)
{
conn = new SqlConnection(sql);
}
return conn;
}
}
///打开数据库
public void OpenCONN()
{
if(CONN.State == CONNState.Closed)
{
CONN.Open();
}
else if(CONN.State == CONNState.Broken)
{
CONN.Clsoe();
CONN.Open();
}
}
///关闭数据库
public void CloseCONN()
{
if(CONN.State == CONNState.Open || CONN.State == CONNState.Broken)
{
CONN.Close();
}
}
}
我的方法是非静态的 你初始化一下 在try里面直接调用 -- catch(e) -- finally(关闭数据库方法)
作者:
张连印
时间:
2011-11-30 23:21
问题出在没有SqlCommand对象指定connection
修改方法:
1.添加:cmd.Connection = conn;
2.将SqlCommand 初始化变为:
SqlCommand cmd=conn.CreateCommand();
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2