我写了一个 关于 投票系统 的程序!using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;namespace 投票系统
{
class LinkDataBase
{
string connectionString = "Persist Security Info=False;Integrated Security=SSPI;database=VotingSystem;server=(local);User ID=sa;Password=";
//string connectionString = "server=adam_pc;uid=sa;pwd=;database=master";
public DataSet relateData(string strSql)
{
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
SqlDataAdapter da = new SqlDataAdapter(strSql, conn);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
public void updatedata(DataSet changeDataSet) {
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
SqlDataAdapter da = new SqlDataAdapter("select * from voting", conn);
SqlCommandBuilder builder = new SqlCommandBuilder(da);
da.Update(changeDataSet);
conn.Close();
}
}
}
这是我数据库连接的代码!
///////////////////////////////////////////////////////////////////////////////
private void button_ok_Click(object sender, EventArgs e)
{
ds = link.relateData("select * from voting");
string name = this.textBox_Candidate.Text;
DataRow dr = ds.Tables[0].NewRow();
dr[0] = name;
dr[1] = 0;
ds.Tables[0].Rows.Add(dr);
link.updatedata(ds);
this.label_results.Text = "添加成功!"; //DataRow dr = ds.Tables[0].NewRow();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
dr = ds.Tables[0].Rows[i];
this.textBox_All.Text += dr[0].ToString() + dr[1].ToString();
this.checkedListBox_voing.Items.Add(dr[0].ToString());
}
}
这是我执行添加候选人,同时将数据显示再textBox_All和checkedListBox_voing里。(1)
//////////////////////////////////////////////////////////////////////////////////////////////
private void checkedListBox_voing_ItemCheck(object sender, System.Windows.Forms.ItemCheckEventArgs e)
{
int n;
n = FindDataset(this.checkedListBox_voing.SelectedItem.ToString());
dr = ds.Tables[0].NewRow();
dr = ds.Tables[0].Rows[n];
if (e.CurrentValue.ToString() == "Unchecked")
dr[1] = 1;
else if (e.CurrentValue.ToString() == "Checked")
dr[1] =2;
link.updatedata(ds);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
dr = ds.Tables[0].Rows[i];
this.textBox_All.Text += dr[0].ToString() + dr[1].ToString();
this.checkedListBox_voing.Items.Add(dr[0].ToString());
}
}
public static int FindDataset(string numstr)
{ DataRow dr = ds.Tables[0].NewRow();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
dr = ds.Tables[0].Rows[i];
if (dr[0].ToString() == numstr)
{
return i;
}
}
return -1;
}
这是我在checkedListBox_voing里进行修改,并将修改后的数据保存到数据库里,(2)
///////////////////////////////////////////////////////////////////////////////////////////////////////////我再执行(1)的时候 没有问题, 但再执行(2)时,再到 link.updatedata(ds);的 public void updatedata(DataSet changeDataSet) 有 :对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。跪求各位高手,帮忙改改!
谢谢!
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;namespace 投票系统
{
class LinkDataBase
{
string connectionString = "Persist Security Info=False;Integrated Security=SSPI;database=VotingSystem;server=(local);User ID=sa;Password=";
//string connectionString = "server=adam_pc;uid=sa;pwd=;database=master";
public DataSet relateData(string strSql)
{
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
SqlDataAdapter da = new SqlDataAdapter(strSql, conn);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
public void updatedata(DataSet changeDataSet) {
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
SqlDataAdapter da = new SqlDataAdapter("select * from voting", conn);
SqlCommandBuilder builder = new SqlCommandBuilder(da);
da.Update(changeDataSet);
conn.Close();
}
}
}
这是我数据库连接的代码!
///////////////////////////////////////////////////////////////////////////////
private void button_ok_Click(object sender, EventArgs e)
{
ds = link.relateData("select * from voting");
string name = this.textBox_Candidate.Text;
DataRow dr = ds.Tables[0].NewRow();
dr[0] = name;
dr[1] = 0;
ds.Tables[0].Rows.Add(dr);
link.updatedata(ds);
this.label_results.Text = "添加成功!"; //DataRow dr = ds.Tables[0].NewRow();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
dr = ds.Tables[0].Rows[i];
this.textBox_All.Text += dr[0].ToString() + dr[1].ToString();
this.checkedListBox_voing.Items.Add(dr[0].ToString());
}
}
这是我执行添加候选人,同时将数据显示再textBox_All和checkedListBox_voing里。(1)
//////////////////////////////////////////////////////////////////////////////////////////////
private void checkedListBox_voing_ItemCheck(object sender, System.Windows.Forms.ItemCheckEventArgs e)
{
int n;
n = FindDataset(this.checkedListBox_voing.SelectedItem.ToString());
dr = ds.Tables[0].NewRow();
dr = ds.Tables[0].Rows[n];
if (e.CurrentValue.ToString() == "Unchecked")
dr[1] = 1;
else if (e.CurrentValue.ToString() == "Checked")
dr[1] =2;
link.updatedata(ds);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
dr = ds.Tables[0].Rows[i];
this.textBox_All.Text += dr[0].ToString() + dr[1].ToString();
this.checkedListBox_voing.Items.Add(dr[0].ToString());
}
}
public static int FindDataset(string numstr)
{ DataRow dr = ds.Tables[0].NewRow();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
dr = ds.Tables[0].Rows[i];
if (dr[0].ToString() == numstr)
{
return i;
}
}
return -1;
}
这是我在checkedListBox_voing里进行修改,并将修改后的数据保存到数据库里,(2)
///////////////////////////////////////////////////////////////////////////////////////////////////////////我再执行(1)的时候 没有问题, 但再执行(2)时,再到 link.updatedata(ds);的 public void updatedata(DataSet changeDataSet) 有 :对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。跪求各位高手,帮忙改改!
谢谢!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货