C#网络编程自学总结:
首先建立链接:SqlConnection (1)C#自带的Sql Server的链接 SqlConnection conn=new SqlConnection
(Properties.Settings.Default.DatabaseConnectionString);
(2)C#嵌套的MySql的链接
string constring = "Database=数据库名(kftv);Data Source=服务器地址;User Id=root;Password=密 码;pooling=false;CharSet=utf8;port=3306";
MySqlConnection conn = new MySqlConnection(constring); 其次
通过SQlCommand对象提供的方法(1、ExecuteReader方法<返回数据库读取的各个字段> 2、ExecuteNonQuery方法<返回操作所影响的数据库行数> 3.ExecuteScaler方法<用于查询结果为一个值的情况>)
进行数据库的增删改查的操作命令: < Sql Server与Mysql的操作相同>
string strSql="select * from userinfo where username='"+userName+"'"+"and password ='"+userPwd+"'"; SqlCommand cmd = new SqlCommand(strSql,conn);
SqlDataReader dr = cmd.ExecuteReader(); // SQlCommand对象提供的ExecuteReader方法:
再次 保存本地计算机内存
SqlDataAdapter对象通过无连接的方式完成数据库和本地DataSet之间的交互。
一般步骤:
1) 创建SqlConnection的实例;
2) 创建SqlDataAdapter的实例,需要的话,根据select语句生成其他SQL语句;
3) 创建DataSet的实例;
4) 使用Fill方法将数据库中的表填充到DataSet表中;
5) 利用DataGridView或者其他控件对象编辑或显示数据; 例如::;
public void ShowGridView(string sql,string tableName) {
string constring = "Database=kftv;Data Source=服务器名;User
Id=root;Password=123;pooling=false;CharSet=utf8;port=3306"; MySqlConnection conn = new
MySqlConnection(constring);
conn.Open();
MySqlCommand commn = new MySqlCommand ("set names utf8", conn); commn.ExecuteNonQuery();
string sql = "select * from employeeinfo ";
MySqlDataAdapter mda = new MySqlDataAdapter(sql, conn); DataSet ds = new DataSet();
mda.Fill(ds,tableName );
this.employeeinfoDataGridView.DataSource=ds.Tables[tableName ];
conn.Close();
}
控件与数据库的绑定
在拖放控件实现绑定时候,数据源默认为首行做插入或修改时不小心会修改错误,此时需--->解绑定
//dataGridView1.ClearSelection();
//dataGridView1.CurrentCell = null;
//dataGridView1.Rows[0].Selected = false;
<ShiYanDatabase为数据连接table>
ShiYanDatabaseDataSet ds=new ShiYanDatabaseDataSet(); ShiYanDatabaseDataSetTableAdapters.Table1TableAdapter adapter = new
ShiYanDatabaseDataSetTableAdapters.Table1TableAdapter(); //根据自己的数据源添加绑定
adapter.Fill(ds.Table1 );
dataGridView1.DataSource = ds.Table1 ;//绑定dataGridView1
listBox.DataSource=ds.Table1;//绑定ListBox 其他以此类推其他控件或组件
//下面两行是dataGridView1中显示与数据库中表的属性值信息根据表的属性列对应添加。保证数据表的一致性
dataGridView1.Columns[0].HeaderText = "编码"; dataGridView1.Columns[1].HeaderText = "名称";
REVENGE,ABCDEFG2E6AZQD
private void fmload()
{
string constring="Database=kftv;Data
Source=125.219.39.82;User
Id=root;Password=123;pooling=false;CharSet=utf8;port=3306"; MySqlConnection conn = new
MySqlConnection(constring);
string sql="select * from newscommentinfo"; MySqlCommand cm = new MySqlCommand(sql, conn);
conn.Open();
MySqlDataReader r = cm.ExecuteReader(); while (r.Read())
{
//var s =
// from rs in r[r.Read()]
// select rs;
listBox1.Items.Add(string.Format("{0},{1}",r[0],r[1])); dataGridView1.DataSource = r[0];
}
r.Close();
// kftvDataSet ds=new kftvDataSet (); // //DataTable table = new DataTable(); // MySqlDataAdapter adapter = new
MySqlDataAdapter(sql,conn);
// //adapter.Fill(table);
// //adapter.Fill(ds);不行,表空
// adapter.Fill(ds, "newscommentinfo"); // dataGridView1.DataSource =
ds.Tables["newscommentinfo"];
//// this.dataGridView1.DataSource = table;
conn.Close();
}
1、直接修改表的列名,我认为这是一种最简单,最方便,也可通过
类实现(多个显示页面时)的方法: 实现语句:
ds.Tables[0].Columns["zj_xh"].ColumnName = "序号" 全部代码
如下: private void button1_Click ( object sender,
EventArgs e ) //方法1
{ ClsDB.ClsDBControl cb = new
ClsDB.ClsDBControl(); //实例化连接类
SqlConnection connection = cb.ConDb();//建立连接 string strSql = "select * from ssskyjsj"; //sql 语句
SqlDataAdapter da = new SqlDataAdapter(); // 实例化适配器 SqlCommand sqlcmd=new SqlCommand (strSql ,connection ); //sql
命令 da.SelectCommand = sqlcmd; //使用
SqlDataAdapter的查询 DataSet ds = new DataSet(); // 用 DataSet 方式 ds.Clear();
da.Fill(ds); //修改填充表的列名
ds.Tables[0].Columns["zj_xh"].ColumnName = "序号";
ds.Tables[0].Columns["dahm"].ColumnName = "档案号码";
ds.Tables[0].Columns["gw"].ColumnName = "岗位";
ds.Tables[0].Columns["syry"].ColumnName = "使用人员"; this.dataGridView1.DataSource = ds.Tables[0].DefaultView; if (connection.State == ConnectionState.Open) connection.Close();// 关闭连接 }
2、在sql语句中,给源表的列加中文列名
方法:将方法1中的语句:string strSql = "select * from
sqltable";
变为: string strSql = "select zj_xh as '序号',
dahm as '档案号码',
gw as '岗位',
syry as '使用人员'
from ssskyjsj";
完整代码如下:
private void button4_Click ( object sender, EventArgs e ) //
方法二:给查询语句的列名加中文别名 { ClsDB.ClsDBControl cb = new ClsDB.ClsDBControl(); //实例化
连接类
SqlConnection connection = cb.ConDb();//建立连接
string strSql = "select zj_xh as '序号',dahm as '档案号码',gw
as '岗位',syry as '使用人员' from sqltable"; //sql 语句
SqlDataAdapter da = new SqlDataAdapter(); // 实例化适配器
SqlCommand sqlcmd = new SqlCommand(strSql, connection); //sql命令 da.SelectCommand = sqlcmd; //使用
SqlDataAdapter的查询 DataSet ds = new
DataSet(); // 用 DataSet 方式
ds.Clear();
try
{
da.Fill(ds);
this.dataGridView1.DataSource = ds.Tables[0].DefaultView; //MessageBox.Show("ok!");
}
catch {
MessageBox.Show("error!"); } if (connection.State == ConnectionState.Open)
connection.Close();// 关闭连接
}
3、映射 每一次用DataAdapter来填充DataSet时,都是根据构架来填充数据的.如果想把DataSet中的数据表和表列名根据自己得情况定义一个映射, 如把英文表名称更换成中文表名,把英文列名更换成中文列表,就需要在DataAdapter中进行表映射和列名映射.
表映射方法及完整代码如下:
private void button1_Click_1 ( object sender, EventArgs e )
//方法三:通过映射表及中文列名来显示sql表内容
{
ClsDB.ClsDBControl cb = new ClsDB.ClsDBControl(); //实
例化连接类
SqlConnection connection = cb.ConDb();//建立连接 string strSql = "select * from sqltable"; //sql 语句 SqlDataAdapter da = new SqlDataAdapter(); // 实例化适配器
SqlCommand sqlcmd = new SqlCommand(strSql, connection); //sql
命令
da.SelectCommand = sqlcmd; //使用SqlDataAdapter的查询 DataSet ds = new DataSet(); // 用 DataSet 方式 ds.Clear(); // 映射
//DestTable 为设定的ds 中的用da填充的表名,为映射源表,
DestTable 为映射表名(有点象视图view) // 1 表映射
// 语法:
DataAdapter.TableMappings.Add(SourceTable,DestTable); da.TableMappings.Add("SourceTable", "DestTable"); da.TableMappings.Add("DestTable", "DestTable"); //这一步不能
省,否则在下面的列名映射时会提示找 //DestTable表 //da.Fill(ds, "DestTable");//
填充源表
//2 列映射 // 语法:
dataAdapter.TableMapping[DestTable].ColumnMappings.Add(sourceField,destField);; // 注意:TableMappings 是属性,故后面带方括号,我曾用成圆括号(),找好久才发现这个错误
da.TableMappings["DestTable"].ColumnMappings.Add("zj_xh", "序号");
da.TableMappings["DestTable"].ColumnMappings.Add("dahm", "
档案号码");
da.TableMappings["DestTable"].ColumnMappings.Add("gw", "岗
位");
da.TableMappings["DestTable"].ColumnMappings.Add("syry", "
使用人员"); da.Fill(ds, "DestTable");//填
充表,
注意 1、该条语句只能在这个位置,放在前面,可显示内容,但
不能映射列名;
2、只能用da.Fill(ds, "DestTable"),而不能用 da.Fill(ds,
"SourceTable")
try
{ this.dataGridView1.DataSource = ds; this.dataGridView1.DataMember = "DestTable"; //MessageBox.Show("ok!"); }
catch
{ MessageBox.Show("error!"); } if (connection.State == ConnectionState.Open) connection.Close();// 关闭连接
}
DataGridView 默认选中行
2012-03-29 10:51:32| 分类: C# 控件 | 标签:datagridview |字号 订阅
最近用Winform的DataGridView遇到不少问题,
昨晚就碰到个默认选中行的问题。DataGridView在添加数据后会默认选中第一个单元格或者第一行,我就想取消它的默认选中行。 后来才知道得把它放到窗体的Load事件中,于是添加了form1_Load事件一试,终于没有默认选中的行了。不得如果更新DataGridView的数据之后又会默认选中第一行,所以我就在DataGridView绑定数据之后又加上了ClearSelection()。这样一来,不论是启动窗体之后还是重新更新数据,都不会有默认选中行了。
代码就是这几个,只要放对地方,其中任意一个都能实现取消选中的效果。
dataGridView1.ClearSelection();
//dataGridView1.CurrentCell = null;
//dataGridView1.Rows[0].Selected = false;
控件与数据库的绑定
<ShiYanDatabase为数据连接table>
ShiYanDatabaseDataSet ds=new ShiYanDatabaseDataSet();
ShiYanDatabaseDataSetTableAdapters.Table1TableAdapter adapter = new
ShiYanDatabaseDataSetTableAdapters.Table1TableAdapter();//根据自己的数据源添加绑定
adapter.Fill(ds.Table1 );
dataGridView1.DataSource = ds.Table1 ;//绑定dataGridView1
listBox.DataSource=ds.Table1;//绑定ListBox 其他以此类推