c#与sql的数据处理过程中,在C#中插入,删除,更新数据后,sql里的表不能实时更新,一定要在sql里面执行一下 “execute sql”,sql里的数据才更新。
我想问的是,c#能不能做到代替sql里面的“execute sql”命令,就是我不用再另外去sql里面做什么事情,数据在c#里面操作都能实时更新。
什么数据库?我都没听说过有“execute sql”这个命令
如图所示,需要每次C#更新之后要在sql里执行这条语句,数据才能更新。
@高级小白: 估计是代码有问题,贴代码看看。你用的什么数据库?
@会长:
private void button_Insert_Click(object sender, EventArgs e) { SqlConnection conn = BaseClass.DBConn.Company(); conn.Open(); DataSet ds = new DataSet(); //插入命令 SqlCommand cmd = new SqlCommand("insert into tb_employee(name, number, password, age, position, sex) values (@name, @number, @password, @age, @position, @sex)", conn);//cmd.Parameters.Add("@name", SqlDbType.Text); //cmd.Parameters["@name"].Value = textBox_name.Text; //cmd.Parameters.Add("@number", SqlDbType.Text); //cmd.Parameters["@number"].Value = textBox_number.Text; //cmd.Parameters.Add("@password", SqlDbType.Text); //cmd.Parameters["@password"].Value = textBox_pwd.Text; //cmd.Parameters.Add("@age", SqlDbType.Int); //cmd.Parameters["@age"].Value = sum1; //cmd.Parameters.Add("@position", SqlDbType.Int); //cmd.Parameters["@position"].Value = sum2; //cmd.Parameters.Add("@sex", SqlDbType.Text); //cmd.Parameters["@sex"].Value = textBox_sex.Text; cmd.Parameters.AddWithValue("@name", textBox_name.Text); cmd.Parameters.AddWithValue("@number", textBox_number.Text); cmd.Parameters.AddWithValue("@password", textBox_pwd.Text); cmd.Parameters.AddWithValue("@age", textBox_age.Text); cmd.Parameters.AddWithValue("@position", textBox_power.Text); cmd.Parameters.AddWithValue("@sex", textBox_sex.Text); SqlDataAdapter sda = new SqlDataAdapter(cmd); sda.Fill(ds); }private void button_Delete_Click_1(object sender, EventArgs e)//删除命令 { SqlConnection conn = BaseClass.DBConn.Company(); conn.Open(); DataSet ds = new DataSet(); SqlCommand cmd = new SqlCommand("delete from tb_employee where name = @name ", conn); cmd.Parameters.AddWithValue("@name", textBox3.Text); SqlDataAdapter sda = new SqlDataAdapter(cmd); sda.Fill(ds); }
如代码所示:插入与删除命令都是能正常执行的,但就是每次都要去sql里面执行一下execute sql命令才能更新数据库。用的数据库是sql server。
@高级小白: 看不出有啥毛病
@会长: 本来就没毛病的,我都运行了。我现在的目的是,我不想去sql里执行命令才更新数据,而是直接在C#里面就能更新数据。要不然我每次在c#里面插入一点或删除一点数据库的东西,我都需要去sql里面执行一次才更新数据,那多麻烦啊!
@高级小白: 我终于明白你的意思了。这个没办法,在一个客户端更新了数据,另一个客户端得刷新才能看见,目前我还没有见过自动刷新的数据库工具
@会长: 我相信有这个功能的,因为我这俩个客户端已经能够实现读写了,只是不能刷新而已了,要不然我们很多的软件都不能用了,也许是我的理解能力有限,目前没想到好办法,比如我们的qq与微信,都是注册过用户名与密码,这些肯定储存在数据库或云数据中心的,肯定也是实时更新的
@高级小白: 可以自己写个工具。你为什么要纠结这个
@会长: 不会,我要自己会写,我就不纠结这个了,还请大虾指点指点
@高级小白: count = Cmd.ExecuteNonQuery(); 这个是执行语句,不是 sda.Fill(ds);,fill是获取语句
C#是编程语言,用于执行相关逻辑;
sql是数据库,用于存储数据;
“在C#中插入,删除,更新数据”,是一系列的逻辑操作,最终你肯定是要执行sql命令,将数据存入数据库的。
你百度一下ado.net。
通过ado.net就能实现你说的,用C#操作数据库,不用再去sql客户端里执行sql命令。
@默卿: 如图所示,希望能用ado.net就能实现,不需要另外在sql里面执行这条命令了嘛?
@高级小白: 你是在表格里改完数据,然后右键点执行?
@默卿: 不是的,我是用C#更改数据完成之后,才到sql里右键点执行的,才将C#更改的数据刷新到sql里。
@默卿: 大虾,你能说说用ado.net具体怎么实现嘛、我看了好久的书,都没有做好!
@高级小白: 这里有个关于ado.net的DB辅助类,你看看 https://www.cnblogs.com/gyjjyg/p/6811280.html
这个没办法,是两个客户端,所以想要去sql里查看数据,需要执行sql来获取最新数据。
ado.net
或者ef
都可以,你说的那个是不是你在菜单上操作。不一样的。
又是你,你都能读到数据库的数据,你不能保存数据??
public static int ExecuteNonQuery(string strSql)
{
OracleConnection Conn = new OracleConnection(strConn);
try
{
int count = 0;
OracleCommand Cmd = Cmd = new OracleCommand();
Cmd.Connection = Conn;
Cmd.CommandType = CommandType.Text;
Conn.Open();
Cmd.CommandText = strSql;
count = Cmd.ExecuteNonQuery();
Cmd.Dispose();
Conn.Close();
Conn.Dispose();
return count;
}
catch (Exception)
{
Conn.Close();
Conn.Dispose();
throw;
}
}
没办法,太菜了,所以只好多问问一下园子里的大虾哦!
我说的是需要实时在C#里面更新sql里面的数据,我在C#里插入,删除,更新sql之后,不需要在sql里面进行任何操作,c#的更改都要更新到sql数据库里面去。