方法一:
找到视图——SQLServer 对象资源管理器——添加数据库
连接上即可
然后找到你要用的数据库的属性里面的连接字符串
接下来就可以操作数据库了
class Test1
{
private string MySqlCon1 = "Data Source=localhost;Initial Catalog=SQLStudySimple;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";
private string MySqlCon2 = ConfigurationManager.ConnectionStrings["TestSQLServer"].ConnectionString;
public DataTable ExcuteQuery(string sqlStr)
{
// SqlConnection con = new SqlConnection(@MySqlCon1); //自定义连接对象
SqlConnection con = new SqlConnection(@MySqlCon2);
SqlCommand cmd = new SqlCommand(); //创建命令对象
cmd.Connection = con; //设置命令对象的数据库连接属性
DataTable dt = new DataTable();
try
{
con.Open(); //打开数据库连接
Console.WriteLine("连接数据库成功!");
cmd.CommandType = CommandType.Text;
cmd.CommandText = sqlStr;
SqlDataAdapter msda = new SqlDataAdapter(cmd);
msda.Fill(dt);
}
catch (Exception e)
{
Console.WriteLine("连接失败,失败原因:"+e.Message);
}
finally
{
if (con.State == ConnectionState.Open)
{
con.Close();
Console.WriteLine("关闭成功");
}
}
return dt;
}
里面的MysqlCon 就是刚才的连接字符串
碰到的问题:发现一开始没有指定数据库,Initial Catalog
是这个参数没有加上,这个就是指定你要绑定的数据库。
ConmmandType 中的参数问题
Text
:表示普通的SQL语句
StoredProcedure
:表示是存储过程
TableDirect
:我也没搞懂 :(
上面还用了config去绑定,老朋友了。
其实一开始的步骤存在问题,应该是视图——服务器资源管理,然后在这里面去连接绑定数据源,这里面的连接字符串更加简洁Data Source=localhost;Initial Catalog=SQLStudySimple;Integrated Security=True
,就三个参数,第一个是数据源,第二个是数据库,第三个:true 在不知道用户名和密码的情况下就可以连接数据库,false 或者 不写 ,就一定要输入正确的登录名和密码。
DataTable 是一个表结构,遍历:
Test1 test1 = new Test1();
string strSql = "SELECT * FROM table_Zomble";
DataTable dt = test1.ExcuteQuery(strSql);
for(int i = 0; i < dt.Rows.Count; i++) //打印data,table
{
for (int j = 0; j < dt.Columns.Count; j++)
{
Console.Write(dt.Rows[i][j].ToString()+" ");
}
Console.WriteLine();
}
Console.ReadLine();
方法二:
class Test2
{
public void ConnectionSQLServer()
{
SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder();
sb.DataSource = "localhost";
sb.IntegratedSecurity = true;
sb.InitialCatalog = "SQLStudySimple";
SqlConnection con = new SqlConnection(sb.ToString());
try
{
con.Open();
string str = "select * from table_Zomble";
SqlCommand sc = new SqlCommand(str,con);
SqlDataReader sd = sc.ExecuteReader();
while (sd.Read())
{
Console.WriteLine(sd["zomble_name"].ToString());
}
}catch(Exception e)
{
Console.WriteLine("数据库连接失败,失败原因:"+e.Message);
}
finally
{
if (con.State == System.Data.ConnectionState.Open)
{
con.Close();
Console.WriteLine("数据库连接关闭");
}
}
}
}
两种方法其实本质没差别。
SqlDataReader
这个对象理解不深,现在只知道可以将执行读取返回的数据放在里面,然后循环读出。
以上都是查询操作,修改操作其实同理,只是SQL语句不同。第二个例子也可以将SQL查询语句作为参数传递,实现封装效果。
中间改登录名密码登录,发现出错。参考:这里,解决。
Mysql连接:
class Test3
{
private string MySqlCon1 = "Server=localhost;Port=3306;Database=sqlstudysimple;Uid=root;Pwd=";
public void ConnectionMySQL()
{
MySqlConnection con = new MySqlConnection(MySqlCon1);
try
{
con.Open();
Console.WriteLine("连接成功!");
string str = "select * from table_myplant";
MySqlCommand sc = new MySqlCommand(str, con);
MySqlDataReader sd = sc.ExecuteReader();
while (sd.Read())
{
Console.WriteLine(sd["plant_name"].ToString());
}
}
catch (Exception e)
{
Console.WriteLine("数据库连接失败,失败原因:" + e.Message);
}
finally
{
if (con.State == System.Data.ConnectionState.Open)
{
con.Close();
Console.WriteLine("数据库连接关闭");
}
}
}
}
差别不大。