ado.net数据库访问问题,求解答! 本帖最后由 li_xi_quan 于 2011-10-24 09:40:59 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private void previousPage_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { //上一页 if (pageCurrent == 0)//如果当前页数为0,则提示操作无效,停止运行,防止异常发生 { MessageBox.Show("没有数据显示,操作无效!"); } else { pageCurrent--; if (pageCurrent <= 0)//当前页号 { MessageBox.Show("已经是第一页,请点击“下一页”查看!"); pageCurrent++; return; } else { nCurrent = pageSize * (pageCurrent - 1); } LoadData(); if (this.currentPages.Value > 1) { --this.currentPages.Value; } } } private void nextPage_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { //下一页 if (pageCurrent == 0)//如果当前页数为0,则提示操作无效,停止运行,防止异常发生 { MessageBox.Show("没有数据显示,操作无效!"); } else { pageCurrent++; if (pageCurrent > pageCount)//当前页号>页数 { MessageBox.Show("已经是最后一页,请点击“上一页”查看!"); pageCurrent--; return; } else { nCurrent = pageSize * (pageCurrent - 1); } LoadData(); if (this.currentPages.Value < this.currentPages.Maximum) { ++this.currentPages.Value; } } } private void firstPage_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { //第一页 if (pageCurrent == 0)//如果当前页数为0,则提示操作无效,停止运行,防止异常发生 { MessageBox.Show("没有数据显示,操作无效!"); } else { pageCurrent = 1; //当前页数从1开始 nCurrent = 0; //当前记录数从0开始 LoadData(); this.currentPages.Value = 1; } } private void lastPage_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { //最后页 pageCurrent = pageCount; nCurrent = pageSize * (pageCurrent - 1); if (pageCurrent == 0)//如果当前页数为0,则提示操作无效,停止运行,防止异常发生 { MessageBox.Show("没有数据显示,操作无效!"); } else { LoadData(); this.currentPages.Value = Convert.ToInt32(this.totalPages.Text); } } private void currentPages_ValueChanged(object sender, EventArgs e) { //转到指定页 int page = Convert.ToInt32(this.currentPages.Value); if (page > page1 && page <= pageCount) { int number = page - page1; if (pageCurrent < pageCount) { pageCurrent = pageCurrent + number; if (pageCurrent == pageCount) { nCurrent = pageSize * (pageCurrent - 1); } else { nCurrent = pageSize * (pageCurrent - 1); } LoadData(); } } if (0 < page && page < page1) { int number = page1 - page; if (pageCurrent > 0) { pageCurrent = pageCurrent - number; if (pageCurrent == 1) { nCurrent = pageSize * (pageCurrent - 1); } else { nCurrent = pageSize * (pageCurrent - 1); } LoadData(); } } } private void saveAdd_Click(object sender, EventArgs e)//添加记录 { if (dataGridView1.Rows.Count == 0)//如果dataGridView1的行数为0,说明其中尚未有数据(显示数据),则提示并且中断刷新操作 { MessageBox.Show("没有记录添加,不需要保存添加!"); } else { if (MessageBox.Show("确定要添加记录到MySQL数据库吗?", "警告!", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK) { conn = new MySqlConnection(); // 创建mysql连接对象 MyConnectionString = "server = 192.168.0.22; uid = users; pwd = 85836262; charset = utf8 ;database = " + databaseName1; conn.ConnectionString = MyConnectionString; // 配置连接 conn.Open(); // 打开连接 myadp = new MySqlDataAdapter("select * from " + tableName, conn); objCommandBuilder = new MySqlCommandBuilder(myadp); myadp.Update(dtTemp, tableName); dtTemp.AcceptChanges(); MessageBox.Show("数据已成功添加到MySQL数据库!"); conn.Close(); } } } private DataTable GetTableNames1(string sql)//GetTableNames1()方法,用于获取所有数据库名 { MySqlConnection conn = null; MySqlCommand command = null; MySqlDataReader reader = null; DataTable getName = new DataTable(); //DataTable table = GetTableNames1("show databases");//调用GetTableNames1()获取所有数据库名 //databaseName2 = table.Rows[0][0].ToString(); conn = new MySqlConnection("Server=192.168.0.22;uid=users;pwd=85836262;charset = utf8 ;Database=xscj");////获取数据库名时,先要在某个数据库中建立一个登录验证的表 command = conn.CreateCommand(); command.CommandText = sql; conn.Open(); reader = command.ExecuteReader(); getName.Load(reader); conn.Close(); command = null; reader.Close(); return getName; } private DataTable GetTableNames2(string sql)//GetTableNames2()方法,用于获取某个数据库中所有表名 { MySqlConnection conn = null; MySqlCommand command = null; MySqlDataReader reader = null; DataTable getName = new DataTable(); conn = new MySqlConnection("Server=192.168.0.22;uid=users;pwd=85836262;charset = utf8 ;Database=" + databaseName1); command = conn.CreateCommand(); command.CommandText = sql; conn.Open(); reader = command.ExecuteReader(); getName.Load(reader); conn.Close(); command = null; reader.Close(); return getName; } private void getTableName_Click(object sender, EventArgs e)//获取MySQL服务器中某个数据库的所有表名,并且把所有表名在checkedListBox1中显示 { if (databaseName1 == null) { MessageBox.Show("你还没有获取或者选中一个数据库名!"); } else { checkedListBox1.Items.Clear();//当用户再次单击获取数据集按钮时,防止在checkedListBox1中重复显示,先清除之前checkedListBox1中的内容 DataTable table = GetTableNames2("show tables");//调用GetTableNames2()获取某个数据库中所有表名 for (int i = 0; i < table.Rows.Count; i++) { checkedListBox1.Items.Add(table.Rows[i][0].ToString()); } } } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { Application.Exit(); } private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)//控制checkedListBox1只能单选,不能复选 { if (this.checkedListBox1.CheckedItems.Count > 0) { for (int i = 0; i < this.checkedListBox1.Items.Count; i++) { if (i != e.Index) { this.checkedListBox1.SetItemCheckState(i, System.Windows.Forms.CheckState.Unchecked); } } } } private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e) { tableName = checkedListBox1.SelectedItem.ToString(); } private void getDataBaseName_Click(object sender, EventArgs e)//获取MySQL服务器中所有的数据库名,并且把所有的数据库名在checkedListBox2中显示 { checkedListBox2.Items.Clear(); DataTable table = GetTableNames1("show databases");//调用GetTableNames1()获取所有数据库名 for (int i = 0; i < table.Rows.Count; i++) { if (table.Rows[i][0].ToString() != "information_schema" && table.Rows[i][0].ToString() != "mysql" && table.Rows[i][0].ToString() != "performance_schema" && table.Rows[i][0].ToString() != "test" && table.Rows[i][0].ToString() != "work") { checkedListBox2.Items.Add(table.Rows[i][0].ToString()); } else continue; } } private void checkedListBox2_ItemCheck(object sender, ItemCheckEventArgs e)//控制checkedListBox2只能单选,不能复选 { if (this.checkedListBox2.CheckedItems.Count > 0) { for (int i = 0; i < this.checkedListBox2.Items.Count; i++) { if (i != e.Index) { this.checkedListBox2.SetItemCheckState(i, System.Windows.Forms.CheckState.Unchecked); } } } } private void checkedListBox2_SelectedIndexChanged(object sender, EventArgs e) { databaseName1 = checkedListBox2.SelectedItem.ToString(); } }}以上是程序的完整代码 问题解决了,改用ODBC访问数据库,就没有问题了,呵呵。 sql文件出现乱码,如何恢复?? 我想考 MYSQL DBA 的相关认证,请问哪里可以报名 mysql 繁体中文乱码 关于PostgreSQL的问题 得到一条记录 按照 成绩字段排序 的名次 如何在windows 的mysql把数据库放到d盘 分区表是否在建立的时候就已经确定了建几个分区? 怎样用一条SQL语句实现不同服务器之间的数据传输?MySQL 大家觉得把我原来用的MySQL4.0.18升级成MySQL5.0好不? 在windows98+apache+php+mysql环境下怎样配置才能访问cgi-bin目录? 急求:关于触发器的问题 Group by 后如何保持原先的排序?
{
//上一页
if (pageCurrent == 0)//如果当前页数为0,则提示操作无效,停止运行,防止异常发生
{
MessageBox.Show("没有数据显示,操作无效!");
}
else
{
pageCurrent--;
if (pageCurrent <= 0)//当前页号
{
MessageBox.Show("已经是第一页,请点击“下一页”查看!");
pageCurrent++;
return;
}
else
{
nCurrent = pageSize * (pageCurrent - 1);
}
LoadData();
if (this.currentPages.Value > 1)
{
--this.currentPages.Value;
}
}
} private void nextPage_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
//下一页
if (pageCurrent == 0)//如果当前页数为0,则提示操作无效,停止运行,防止异常发生
{
MessageBox.Show("没有数据显示,操作无效!");
}
else
{
pageCurrent++;
if (pageCurrent > pageCount)//当前页号>页数
{
MessageBox.Show("已经是最后一页,请点击“上一页”查看!");
pageCurrent--;
return;
}
else
{
nCurrent = pageSize * (pageCurrent - 1);
}
LoadData();
if (this.currentPages.Value < this.currentPages.Maximum)
{
++this.currentPages.Value;
}
}
} private void firstPage_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
//第一页
if (pageCurrent == 0)//如果当前页数为0,则提示操作无效,停止运行,防止异常发生
{
MessageBox.Show("没有数据显示,操作无效!");
}
else
{
pageCurrent = 1; //当前页数从1开始
nCurrent = 0; //当前记录数从0开始
LoadData();
this.currentPages.Value = 1;
}
} private void lastPage_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
//最后页
pageCurrent = pageCount;
nCurrent = pageSize * (pageCurrent - 1);
if (pageCurrent == 0)//如果当前页数为0,则提示操作无效,停止运行,防止异常发生
{
MessageBox.Show("没有数据显示,操作无效!");
}
else
{
LoadData();
this.currentPages.Value = Convert.ToInt32(this.totalPages.Text);
}
} private void currentPages_ValueChanged(object sender, EventArgs e)
{
//转到指定页
int page = Convert.ToInt32(this.currentPages.Value);
if (page > page1 && page <= pageCount)
{
int number = page - page1;
if (pageCurrent < pageCount)
{
pageCurrent = pageCurrent + number;
if (pageCurrent == pageCount)
{
nCurrent = pageSize * (pageCurrent - 1); }
else
{
nCurrent = pageSize * (pageCurrent - 1);
}
LoadData();
}
} if (0 < page && page < page1)
{
int number = page1 - page;
if (pageCurrent > 0)
{
pageCurrent = pageCurrent - number;
if (pageCurrent == 1)
{
nCurrent = pageSize * (pageCurrent - 1);
}
else
{
nCurrent = pageSize * (pageCurrent - 1);
}
LoadData();
}
}
} private void saveAdd_Click(object sender, EventArgs e)//添加记录
{
if (dataGridView1.Rows.Count == 0)//如果dataGridView1的行数为0,说明其中尚未有数据(显示数据),则提示并且中断刷新操作
{
MessageBox.Show("没有记录添加,不需要保存添加!");
}
else
{
if (MessageBox.Show("确定要添加记录到MySQL数据库吗?", "警告!", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
{
conn = new MySqlConnection(); // 创建mysql连接对象
MyConnectionString = "server = 192.168.0.22; uid = users; pwd = 85836262; charset = utf8 ;database = " + databaseName1;
conn.ConnectionString = MyConnectionString; // 配置连接
conn.Open(); // 打开连接
myadp = new MySqlDataAdapter("select * from " + tableName, conn);
objCommandBuilder = new MySqlCommandBuilder(myadp);
myadp.Update(dtTemp, tableName);
dtTemp.AcceptChanges();
MessageBox.Show("数据已成功添加到MySQL数据库!");
conn.Close();
}
}
} private DataTable GetTableNames1(string sql)//GetTableNames1()方法,用于获取所有数据库名
{
MySqlConnection conn = null;
MySqlCommand command = null;
MySqlDataReader reader = null;
DataTable getName = new DataTable(); //DataTable table = GetTableNames1("show databases");//调用GetTableNames1()获取所有数据库名
//databaseName2 = table.Rows[0][0].ToString(); conn = new MySqlConnection("Server=192.168.0.22;uid=users;pwd=85836262;charset = utf8 ;Database=xscj");////获取数据库名时,先要在某个数据库中建立一个登录验证的表
command = conn.CreateCommand();
command.CommandText = sql;
conn.Open();
reader = command.ExecuteReader();
getName.Load(reader);
conn.Close();
command = null;
reader.Close();
return getName;
} private DataTable GetTableNames2(string sql)//GetTableNames2()方法,用于获取某个数据库中所有表名
{
MySqlConnection conn = null;
MySqlCommand command = null;
MySqlDataReader reader = null;
DataTable getName = new DataTable();
conn = new MySqlConnection("Server=192.168.0.22;uid=users;pwd=85836262;charset = utf8 ;Database=" + databaseName1);
command = conn.CreateCommand();
command.CommandText = sql;
conn.Open();
reader = command.ExecuteReader();
getName.Load(reader);
conn.Close();
command = null;
reader.Close();
return getName;
}
{
if (databaseName1 == null)
{
MessageBox.Show("你还没有获取或者选中一个数据库名!");
}
else
{
checkedListBox1.Items.Clear();//当用户再次单击获取数据集按钮时,防止在checkedListBox1中重复显示,先清除之前checkedListBox1中的内容
DataTable table = GetTableNames2("show tables");//调用GetTableNames2()获取某个数据库中所有表名
for (int i = 0; i < table.Rows.Count; i++)
{
checkedListBox1.Items.Add(table.Rows[i][0].ToString());
}
}
} private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
} private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)//控制checkedListBox1只能单选,不能复选
{
if (this.checkedListBox1.CheckedItems.Count > 0)
{
for (int i = 0; i < this.checkedListBox1.Items.Count; i++)
{
if (i != e.Index)
{
this.checkedListBox1.SetItemCheckState(i, System.Windows.Forms.CheckState.Unchecked);
}
}
}
} private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
tableName = checkedListBox1.SelectedItem.ToString();
} private void getDataBaseName_Click(object sender, EventArgs e)//获取MySQL服务器中所有的数据库名,并且把所有的数据库名在checkedListBox2中显示
{
checkedListBox2.Items.Clear();
DataTable table = GetTableNames1("show databases");//调用GetTableNames1()获取所有数据库名
for (int i = 0; i < table.Rows.Count; i++)
{
if (table.Rows[i][0].ToString() != "information_schema" && table.Rows[i][0].ToString() != "mysql"
&& table.Rows[i][0].ToString() != "performance_schema" && table.Rows[i][0].ToString() != "test"
&& table.Rows[i][0].ToString() != "work")
{
checkedListBox2.Items.Add(table.Rows[i][0].ToString());
}
else
continue;
}
} private void checkedListBox2_ItemCheck(object sender, ItemCheckEventArgs e)//控制checkedListBox2只能单选,不能复选
{
if (this.checkedListBox2.CheckedItems.Count > 0)
{
for (int i = 0; i < this.checkedListBox2.Items.Count; i++)
{
if (i != e.Index)
{
this.checkedListBox2.SetItemCheckState(i, System.Windows.Forms.CheckState.Unchecked);
}
}
}
} private void checkedListBox2_SelectedIndexChanged(object sender, EventArgs e)
{
databaseName1 = checkedListBox2.SelectedItem.ToString();
}
}
}以上是程序的完整代码