您的位置:首页 > 数据库

访问sql server2014数据库

2015-08-02 00:00 369 查看
摘要: 使用c#建立与sql server数据库的链接,并实现其增删改查的功能,已经提取数据在以表格的形式显示数据

以前编写有关链接数据库,已经实现增删改查功能都比较繁琐和冗长。本篇文章使用了比较简单明了de方式,实现这些功能

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;//第一步:引用与sql相关的命名空间
using System.Data;//引用表的命名空间
public class SqlHelper
{
public static string connstr = "server=.;uid=sa;pwd=123;database=Blog";//公共的静态的  连接字符串
/// <summary>
/// 功能:数据库连接已经执行sql语句
/// </summary>
/// <param name="cmdText">
/// sql语句
/// </param>
/// <param name="pms">
/// 一个可变数组。意味着你可以传入一个或多个参数进去,有可伸缩性
/// </param>
/// <returns>
/// 返回结果大于0则执行成功
/// </returns>
public static int ExecuteScalar(string cmdText, params SqlParameter[] pms)
{
//params:不限长度的数组
//第一步:创建数据库对象连接
SqlConnection conn = new SqlConnection(connstr);
//第二步:打开数据库

conn.Open();
//第三步:创建数据库命令对象和数据库查询语句
SqlCommand cmd = new SqlCommand(cmdText, conn);
//第四步:创建参数对象
if (pms != null)
{

foreach (SqlParameter item in pms)//第一个参数:你的数据类型  //第二个参数是值  //第三个参数:in   在什么什么里面   //第四个参数   数组的名称
{
if (item != null)
{
cmd.Parameters.Add(item);
}
}
}
//第五步:返回结果
int i = Convert.ToInt32(cmd.ExecuteScalar());
//第六步:关闭数据库
conn.Close();
//第六步:把最终的结果返回到外面去
return i;
}
/// <summary>
/// 检验数据库里面有没有这个qq账号
/// </summary>
/// <param name="cmdText"></param>
/// <returns></returns>
public static bool acountexist(string cmdText, params SqlParameter[] pms)
{
SqlConnection conn = new SqlConnection(connstr);
conn.Open();
SqlCommand cmd = new SqlCommand(cmdText, conn);

if (pms != null)
{

foreach (SqlParameter item in pms)//第一个参数:你的数据类型  //第二个参数是值  //第三个参数:in   在什么什么里面   //第四个参数   数组的名称
{
if (item != null)
{
cmd.Parameters.Add(item);
}
}
}

int i = Convert.ToInt32(cmd.ExecuteScalar());

conn.Close();

if (i > 0)
return true;
else
{
return false;
}
}

//实现增删改查功能
public static int ExecuteNonQuery(string cmdText, params SqlParameter[] pms)
{
//params:不限长度的数组
//第一步:创建数据库对象连接
SqlConnection conn = new SqlConnection(connstr);
//第二步:打开数据库
conn.Open();
//第三步:创建数据库命令对象和数据库查询语句
SqlCommand cmd = new SqlCommand(cmdText, conn);
//第四步:创建参数对象
//cmd.Parameters.Add(pms);//如果我们在这里直接放入pms数组,那么cmd添加进去的都是SqlParameter,而不是具体的参数。

//  int[] ii = new int[5] { 1,2,3,4,5 };
if (pms != null)
{

foreach (SqlParameter item in pms)//第一个参数:你的数据类型  //第二个参数是值  //第三个参数:in   在什么什么里面   //第四个参数   数组的名称
{
if (item != null)
{
cmd.Parameters.Add(item);
}
}
}
//第五步:返回结果
int i = Convert.ToInt32(cmd.ExecuteNonQuery());
//第六步:关闭数据库
conn.Close();
//第六步:把最终的结果返回到外面去
return i;
}
//查询数据返回到一张表
public static DataTable GetTable(string cmdText, params SqlParameter[] pms)
{
//params:不限长度的数组
//第一步:创建数据库对象连接
SqlConnection conn = new SqlConnection(connstr);
//第二步:打开数据库
conn.Open();
//第三步:创建数据库命令对象和数据库查询语句
SqlCommand cmd = new SqlCommand(cmdText, conn);
//第四步:创建参数对象
//cmd.Parameters.Add(pms);//如果我们在这里直接放入pms数组,那么cmd添加进去的都是SqlParameter,而不是具体的参数。

//  int[] ii = new int[5] { 1,2,3,4,5 };
if (pms != null)
{

//for (int i = 0; i <pms.Length; i++)
//{
//    if (pms[i]!=null)
//    {
//        cmd.Parameters.Add(pms[i]);
//    }

//}
foreach (SqlParameter item in pms)//第一个参数:你的数据类型  //第二个参数是值  //第三个参数:in   在什么什么里面   //第四个参数   数组的名称
{
if (item != null)
{
cmd.Parameters.Add(item);
}
}
}
//5. SqlDataAdapter是.net中用于存放数组库里面取出来的数   相当于我们现实生活中的容器
SqlDataAdapter sda = new SqlDataAdapter(cmd);
//6.去创建一个适配器 用来接受容器的
DataSet ds = new DataSet();
sda.Fill(ds, "aa");
conn.Close();
DataTable dt = ds.Tables["aa"];
return dt;
}

public static SqlDataReader GetReader(string cmdText, params SqlParameter[] pms)
{
SqlConnection conn = new SqlConnection(connstr);
//第二步:打开数据库
conn.Open();
//第三步:创建数据库命令对象和数据库查询语句
SqlCommand cmd = new SqlCommand(cmdText, conn);
//第四步:创建参数对象
//cmd.Parameters.Add(pms);//如果我们在这里直接放入pms数组,那么cmd添加进去的都是SqlParameter,而不是具体的参数。

//  int[] ii = new int[5] { 1,2,3,4,5 };
if (pms != null)
{

//for (int i = 0; i <pms.Length; i++)
//{
//    if (pms[i]!=null)
//    {
//        cmd.Parameters.Add(pms[i]);
//    }

//}
foreach (SqlParameter item in pms)//第一个参数:你的数据类型  //第二个参数是值  //第三个参数:in   在什么什么里面   //第四个参数   数组的名称
{
if (item != null)
{
cmd.Parameters.Add(item);
}
}
}
SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);//把数据取出来以游标的形式放入sdr
return sdr;

}

}

不知道大家有没有注意到,这里面的函数反复使用了一个叫parmas的关键字。这个关键字表明后面使用的数组是一个可变的。即此处输入一个参数也行,两个参数也可以,等等。举例说明如下:

protected void btnReset_Click(object sender, EventArgs e)
{
string cmd = "select COUNT(0)  from UserInfo where UserQQ=@a";
SqlParameter pms = new SqlParameter("@a", txtUserQQ.Text);
if (SqlHelper.acountexist(cmd, pms))
{

string cmdReset = "update  UserInfo set UserPwd='111' where UserQQ=@a";
SqlParameter pms1 = new SqlParameter("@a", txtUserQQ.Text);
if (SqlHelper.ExecuteNonQuery(cmdReset, pms1) > 0) {
Response.Write("密码已经重置!");
}
else
{
Response.Write("密码重置失败!");
}

}
else
{
Response.Write("没有该账号!请注册...");
}
}

当然也可以传两个以上的参数

protected void Button2_Click(object sender, EventArgs e)
{
string cmd = "select COUNT(0)  from UserInfo where UserQQ=@a and UserPwd=@b";
SqlParameter pms = new SqlParameter("@a", txtUserQQ.Text);
SqlParameter pms2 = new SqlParameter("@b", txtUserPwd.Text);
if (SqlHelper.ExecuteScalar(cmd, pms, pms2) > 0)
{
Response.Write("登陆成功!");

}
else
{
Response.Write("账号或密码有误,请重新输入!");
}
}

protected void Button1_Click(object sender, EventArgs e)
{
string userQQ = string.Empty;
//系统生成一个QQ号
while (true)
{
Random rm = new Random();
userQQ = rm.Next(1000, 9999).ToString();
userQQ += rm.Next(1000, 9999).ToString();
string cmd = "select COUNT(0)  from UserInfo where UserQQ=@a";
SqlParameter pms = new SqlParameter("@a", userQQ);
if (SqlHelper.acountexist(cmd, pms))
{

}
else
{
break;
}
}

string cmd1 = "insert into UserInfo(UserName,UserPwd,UserQQ,UserRealName,UserRealmark,UserSex) values(@username,@userpwd,@userqq,@userrealname,@userrealmark,@usersex);";
string sex = string.Empty;
if (rbtnMan.Checked == true)
{
sex = "男";
}
else
{
sex = "女";
}
SqlParameter[] pms1 = new SqlParameter[6]
{
new SqlParameter("@username",txtUserName.Text),
new SqlParameter("@userpwd",txtQQpwd.Text),
new SqlParameter("@userqq",userQQ),
new SqlParameter("@userrealname",txtRealUserName.Text),
new SqlParameter("@userrealmark",txtbeizhu.Text),
new SqlParameter("@usersex",sex)
};
if (SqlHelper.ExecuteNonQuery(cmd1, pms1) > 0)
{

Response.Write("注册成功!" + "QQ账号为:" + userQQ);
}
else
{
Response.Write("注册失败!");
}

}

值得一提de就能使参数可变传递的就是这样一个关键字params。使用它我们可以使函数功能更加丰富灵活
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  params