作为一名C#初学者,除了各种对象,窗口属性,类库调用一脸懵逼以外,数据库链和操作也是相当头痛,以下是我学习C#窗体程序链接数据库时遇到的问题和解决方法。
首先使用VS链接数据库
数据库链接方法可以百度,这里就不一一说明了;
点击链接好的数据库,在属性里面有一项链接字符串;C#程序里面会使用这个属性进行数据库的链接操作;
我在项目里面创建了一个对数据库经行操作的类;
代码如下:(因为这是工具型的类,所以我定义成了静态类,方便调用)
using System.Data;
using System.Data.SqlClient;//需要用到的数据库操作的类库;
static string constr = "Data Source=localhost;Initial Catalog=tempdb;Integrated Security=True";//数据库的链接字符串;
static SqlConnection sqlcon = new SqlConnection(constr);//使用链接字符串建立数据库连接;
连接上数据库后就可以经行数据库的增删查改操作;
数据库修改后需要查询是否操作成功,我写了一个方法查看数据库受影响的行数,代码如下:
static public int ExcuteNoQuery(string cmdstr)//查询数据库受影响的行数并返回,形参是对数据库进行的操作的sql语句;
{
int rsl = 0;
try//数据库操作可能会出现不可预知的错误,使用try--catch方法防止程序出现错误时崩溃;
{
SqlCommand cmd = new SqlCommand(cmdstr, sqlcon);//使用sql语句操作数据库;
if (sqlcon.State != ConnectionState.Open)//判断数据库是否打开
{
sqlcon.Open();
}
rsl = cmd.ExecuteNonQuery();//查询数据库受影响的行数返回给rsl;
}
catch (Exception ex)
{
MessageBox.Show("" + ex);//弹窗显示错误信息;
}
finally
{
sqlcon.Close();//关闭数据库;
}
return rsl;//返回操作结果;
}
上面这个方法写好以后,就可一经行各种操作了;
增添信息:
static public int InsertUser(int num,string id, string name, string model, string kind,string unit)//添加信息
{
string sqlcmd = "insert into Companys(CID,CNUM,CNAME,CMODEL,CKIND,CUNIT) values ('" + id + "','"+num+"','" + name + "','" + model + "','"+kind+"','" + unit + "')";设置增添信息的sql语句;
return ExcuteNoQuery(sqlcmd);//调用方法执行sql语句;
}
修改信息:
static public int UpdataInfo(int cid, string cnum, string name, string model, string kind, string unit)//修改数据库信息;参数是数据库表内的字段名
{
string sqlcmd1 = "update Companys set Companys.cid = '" + cnum + "' where Companys.cnum = '" + cid + "'";设置数据库语句;
string sqlcmd2 = "update Companys set Companys.CNAME = '" + name + "' where Companys.cnum = '" + cid + "'";
string sqlcmd3 = "update Companys set Companys.CMODEL = '" + model + "' where Companys.cnum = '" + cid + "'";
string sqlcmd4 = "update Companys set Companys.CKIND = '" + kind + "' where Companys.cnum = '" + cid + "'";
string sqlcmd5 = "update Companys set Companys.CUNIT = '" + unit + "' where Companys.cnum = '" + cid + "'";
if(ExcuteNoQuery(sqlcmd1)==1&& ExcuteNoQuery(sqlcmd2)==1&& ExcuteNoQuery(sqlcmd3)==1 && ExcuteNoQuery(sqlcmd4)== 1&&ExcuteNoQuery(sqlcmd5)==1) ;//调用ExcuteNoQuery(strring cmdstr)方法执行sql语句并返回操作结果;
{
return 1;
}
}
查询数据库数据:
private static DataTable QueryData(string sqlcmd)//查询信息
{
DataSet myds = new DataSet();//声明数据表;
try
{
SqlDataAdapter sda = new SqlDataAdapter(sqlcmd, sqlcon);//调用数据库链接打开数据库
if (sqlcon.State != ConnectionState.Open)
{
sqlcon.Open();
}
sda.Fill(myds);//填充数据表
sqlcon.Close();
return myds.Tables[0];//返回数据表;
}
catch (Exception ex)
{
MessageBox.Show("" + ex);
}
return null;
}
删除数据:
{
int rst = Convert.ToInt32(cid);
string sqlcmd = "delete from Companys where Companys.Cnum = '" + rst + "'";//设置sql语句;
}
关于sql语句请自行百度;如果需要使用代码,请修改相关语句数值,如数据库名,数据字段;
以上代码仅初学者供参考;