using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient; namespace WindowsFormsApplication1.DAL
{
/**
* 实现对SqlServer的基本操作
* 1.SqlConnection对象连接数据库;
* 2.SqlCommand对象,负责SQL语句的执行和存储过程的调用,并获取三种返回模式
* 3.执行存储过程,和带参数的存储过程
* 4.执行带参数的sql语句
*/
public class SqlServerHelp
{
//写在配置中:string ConnectionString = ConfigurationManager.ConnectionStrings["MyConnection"].ToString();
//配置中的写法
//<connectionStrings>
// <add name="SqlConnection" providerName="System.Data.SqlClient" connectionString="server=.;uid=sa;pwd=accp;database=pubs"/>
//</connectionStrings>
//或
//<appSettings>
// <add name="SqlConnection" providerName="System.Data.SqlClient" connectionString="server=.;uid=sa;pwd=accp;database=pubs"/>
//</appSettings> //Sql 验证:string ConnectionString = "user id=sa;password=;initial catalog=northwind;datasource=localhost;connect Timeout=20";
//Windows 身份验证:连接字符串:Data Source =数据库程序实例名,Initial Catalog=数据库名, Integrated Security=True 表示系统模式登录,不需要用户名密码,有最高权限
static string ConnectionString = @"Data Source=DESKTOP-IF0RC4M\SQL2012;Initial Catalog=mySqlServer;Integrated Security=True";
//执行sql语句,返回一个值
public static string GetStr()
{
string val = "";
//传入连接字符串连接
SqlConnection con = new SqlConnection(ConnectionString);
try
{
con.Open();
//传入sql语句和连接类
SqlCommand com = new SqlCommand("SELECT * FROM dbo.Table_1", con);
//返回一个值(第一行第一列)
val = com.ExecuteScalar().ToString();
con.Close(); //必须关闭,可以用USING方式写
}
catch
{
con.Close();
}
return val;
}
//执行sql语句,返回多行值
public static DataTable GetRows()
{
DataTable dt = new DataTable();
//传入连接字符串连接
SqlConnection con = new SqlConnection(ConnectionString);
try
{
con.Open();
//传入sql语句和连接类
SqlCommand com = new SqlCommand("SELECT * FROM dbo.Table_1", con);
//返回一个值(第一行第一列)
SqlDataReader dr = com.ExecuteReader();
dt.Load(dr);//直接把结果放进TB表中
//while(dr.Read()) //返回ture表示能读取一行,表示读取全部行
//{
// val = dr.GetString(0);//GetString(0)获取第一个字段的值
//} //dr.Read();//执行读取一行,返回值是bool
//val = dr.GetString(0);
con.Close();
}
catch
{
con.Close();
}
return dt;
}
//执行sql语句,返回返回一张表
public static DataTable GetTable()
{
DataTable dt = new DataTable();
//传入连接字符串连接
SqlConnection con = new SqlConnection(ConnectionString);
try
{
con.Open();
//传入sql语句和连接类
//SqlCommand com = new SqlCommand("SELECT * FROM dbo.Table_1", con);
//SqlDataAdapter sda = new SqlDataAdapter(com);
//另一种写法
SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM dbo.Table_1", con);
sda.Fill(dt);
con.Close();
}
catch
{
con.Close();
}
return dt;
}
//带参数的sql语句
public static string SqlStr_parameters()
{
string val = "";
//传入连接字符串连接
SqlConnection con = new SqlConnection(ConnectionString);
try
{
con.Open();
//传入sql语句和连接类
SqlCommand com = new SqlCommand("SELECT * FROM dbo.Table_1 WHERE a=@a", con); //特别注意的是,如果参数是字符串,在这里不能加'',
//写法一
//SqlParameter sp = new SqlParameter("@a",SqlDbType.Char,10); //创建参数实例
//sp.Value = "1";
//com.Parameters.Add(sp); //写法一
//SqlParameter sp = new SqlParameter("@a",SqlDbType.Char,10){Value = "1"}; //创建参数实例
//com.Parameters.Add(sp); //写法三(推荐)
SqlParameter sp = new SqlParameter("@a", "");
sp.Value = "";
com.Parameters.Add(sp); //如果参数多的时候可以写成数组的形式
//SqlParameter[] sp1 =new SqlParameter[]{ new SqlParameter("@a", "1") };
//com.Parameters.AddRange(sp1); //返回一个值(第一行第一列)
val = com.ExecuteScalar().ToString();
con.Close(); //必须关闭,可以用USING方式写
}
catch(Exception ea)
{
con.Close();
}
return val;
}
//带参数的存储过程
public static void Sql_procedure()
{
string val = "";
//传入连接字符串连接
SqlConnection con = new SqlConnection(ConnectionString);
try
{
/*存储过程
* ALTER PROC usp_execSqlStr
@a CHAR(10)
AS
BEGIN
SELECT * FROM dbo.Table_1 WHERE a=@a
END
*/
con.Open();
//传入sql语句和连接类
SqlCommand com = new SqlCommand("usp_execSqlStr", con); //特别注意的是,如果参数是字符串,在这里不能加'',
//com.CommandType = CommandType.Text; //表示sql语句
com.CommandType = CommandType.StoredProcedure ; //表示存储过程
SqlParameter sp = new SqlParameter("@a", "");
com.Parameters.Add(sp);
val = com.ExecuteScalar().ToString(); //存储过程的执行和一般的sql语句的执行是一样的
con.Close(); //必须关闭,可以用USING方式写
}
catch (Exception ea)
{
con.Close();
}
}
}
}
05-11 21:54