7 个解决方案
#1
不清楚,mysql好像不可以
#2
需要安装MySQL数据库
不过你可以将 MySQL 绿色版和你的程序一起打包
在程序里用 dos 命令启停 MySQL 服务,如:
#启动
start /B "Mysql" "\AMP\mysql\bin\mysqld.exe" --defaults-file="\AMP\mysql\my.ini"
#关闭
tskill mysqld
不过你可以将 MySQL 绿色版和你的程序一起打包
在程序里用 dos 命令启停 MySQL 服务,如:
#启动
start /B "Mysql" "\AMP\mysql\bin\mysqld.exe" --defaults-file="\AMP\mysql\my.ini"
#关闭
tskill mysqld
#3
如果是连远程数据库。那一个吗mysql的dll就好了。
如果是用本地的mysql 必须装mysql。 不想装可以用sqlite。
如果是用本地的mysql 必须装mysql。 不想装可以用sqlite。
#4
说得很对,不过我没试过连远程数据库,能贴出几条关键代码不?虽然大家都知道底层是socket传来传去。。。。。
#5
using System;
using System.Data;
using System.IO;
using System.Text;
using MySql.Data.MySqlClient;
namespace dddd
{
/// <summary>
/// MySqlHelper操作类
/// </summary>
public sealed partial class MySqlHelper
{
/// <summary>
/// 批量操作每批次记录数
/// </summary>
public static int BatchSize = 2000;
/// <summary>
/// 超时时间
/// </summary>
public static int CommandTimeOut = 600;
/// <summary>
///初始化MySqlHelper实例
/// </summary>
/// <param name="connectionString">数据库连接字符串</param>
public MySqlHelper(string connectionString)
{
this.ConnectionString = connectionString;
}
/// <summary>
/// 数据库连接字符串
/// </summary>
public string ConnectionString { get; set; }
#region 实例方法
#region ExecuteNonQuery
/// <summary>
/// 执行SQL语句,返回影响的行数
/// </summary>
/// <param name="commandText">SQL语句</param>
/// <param name="parms">查询参数</param>
/// <returns>返回影响的行数</returns>
public int ExecuteNonQuery(string commandText, params MySqlParameter[] parms)
{
return ExecuteNonQuery(ConnectionString, CommandType.Text, commandText, parms);
}
/// <summary>
/// 执行SQL语句,返回影响的行数
/// </summary>
/// <param name="commandType">命令类型(存储过程,命令文本, 其它.)</param>
/// <param name="commandText">SQL语句或存储过程名称</param>
/// <param name="parms">查询参数</param>
/// <returns>返回影响的行数</returns>
public int ExecuteNonQuery(CommandType commandType, string commandText, params MySqlParameter[] parms)
{
return ExecuteNonQuery(ConnectionString, commandType, commandText, parms);
}
#endregion ExecuteNonQuery
#region ExecuteScalar
/// <summary>
/// 执行SQL语句,返回结果集中的第一行第一列
/// </summary>
/// <typeparam name="T">返回对象类型</typeparam>
/// <param name="commandText">SQL语句</param>
/// <param name="parms">查询参数</param>
/// <returns>返回结果集中的第一行第一列</returns>
public T ExecuteScalar<T>(string commandText, params MySqlParameter[] parms)
{
return ExecuteScalar<T>(ConnectionString, commandText, parms);
}
/// <summary>
/// 执行SQL语句,返回结果集中的第一行第一列
/// </summary>
/// <param name="commandText">SQL语句</param>
/// <param name="parms">查询参数</param>
/// <returns>返回结果集中的第一行第一列</returns>
public object ExecuteScalar(string commandText, params MySqlParameter[] parms)
{
return ExecuteScalar(ConnectionString, CommandType.Text, commandText, parms);
}
/// <summary>
/// 执行SQL语句,返回结果集中的第一行第一列
/// </summary>
/// <param name="commandType">命令类型(存储过程,命令文本, 其它.)</param>
/// <param name="commandText">SQL语句或存储过程名称</param>
/// <param name="parms">查询参数</param>
/// <returns>返回结果集中的第一行第一列</returns>
public object ExecuteScalar(CommandType commandType, string commandText, params MySqlParameter[] parms)
{
return ExecuteScalar(ConnectionString, commandType, commandText, parms);
}
#endregion ExecuteScalar
#region ExecuteDataReader
/// <summary>
/// 执行SQL语句,返回只读数据集
/// </summary>
/// <param name="commandText">SQL语句</param>
/// <param name="parms">查询参数</param>
/// <returns>返回只读数据集</returns>
private MySqlDataReader ExecuteDataReader(string commandText, params MySqlParameter[] parms)
{
return ExecuteDataReader(ConnectionString, CommandType.Text, commandText, parms);
}
}
}
MySqlHelper msq = null;
msq = new MySqlHelper("server=123.123.123.123;database=datadb;uid=用户名(远程的话不建议用root);pwd=pass;Charset=utf8");
mysqlhelper的代码太长。 你自己去下一个。另外还要下一个MySql.Data.dll
#6
直连数据库的话要考虑这几点。
1.用户名的权限问题。 自己要管理好。
2.长时间没操作或首次连接 都很慢。注意做异步操作
3.不建议直连。除非是局域网。
ps:mysqlhelper 类没贴完。 自己去找个吧。
1.用户名的权限问题。 自己要管理好。
2.长时间没操作或首次连接 都很慢。注意做异步操作
3.不建议直连。除非是局域网。
ps:mysqlhelper 类没贴完。 自己去找个吧。
#7
谢谢大家的回复,我用SQLite替代mysql一起打包就搞定了
#1
不清楚,mysql好像不可以
#2
需要安装MySQL数据库
不过你可以将 MySQL 绿色版和你的程序一起打包
在程序里用 dos 命令启停 MySQL 服务,如:
#启动
start /B "Mysql" "\AMP\mysql\bin\mysqld.exe" --defaults-file="\AMP\mysql\my.ini"
#关闭
tskill mysqld
不过你可以将 MySQL 绿色版和你的程序一起打包
在程序里用 dos 命令启停 MySQL 服务,如:
#启动
start /B "Mysql" "\AMP\mysql\bin\mysqld.exe" --defaults-file="\AMP\mysql\my.ini"
#关闭
tskill mysqld
#3
如果是连远程数据库。那一个吗mysql的dll就好了。
如果是用本地的mysql 必须装mysql。 不想装可以用sqlite。
如果是用本地的mysql 必须装mysql。 不想装可以用sqlite。
#4
说得很对,不过我没试过连远程数据库,能贴出几条关键代码不?虽然大家都知道底层是socket传来传去。。。。。
#5
using System;
using System.Data;
using System.IO;
using System.Text;
using MySql.Data.MySqlClient;
namespace dddd
{
/// <summary>
/// MySqlHelper操作类
/// </summary>
public sealed partial class MySqlHelper
{
/// <summary>
/// 批量操作每批次记录数
/// </summary>
public static int BatchSize = 2000;
/// <summary>
/// 超时时间
/// </summary>
public static int CommandTimeOut = 600;
/// <summary>
///初始化MySqlHelper实例
/// </summary>
/// <param name="connectionString">数据库连接字符串</param>
public MySqlHelper(string connectionString)
{
this.ConnectionString = connectionString;
}
/// <summary>
/// 数据库连接字符串
/// </summary>
public string ConnectionString { get; set; }
#region 实例方法
#region ExecuteNonQuery
/// <summary>
/// 执行SQL语句,返回影响的行数
/// </summary>
/// <param name="commandText">SQL语句</param>
/// <param name="parms">查询参数</param>
/// <returns>返回影响的行数</returns>
public int ExecuteNonQuery(string commandText, params MySqlParameter[] parms)
{
return ExecuteNonQuery(ConnectionString, CommandType.Text, commandText, parms);
}
/// <summary>
/// 执行SQL语句,返回影响的行数
/// </summary>
/// <param name="commandType">命令类型(存储过程,命令文本, 其它.)</param>
/// <param name="commandText">SQL语句或存储过程名称</param>
/// <param name="parms">查询参数</param>
/// <returns>返回影响的行数</returns>
public int ExecuteNonQuery(CommandType commandType, string commandText, params MySqlParameter[] parms)
{
return ExecuteNonQuery(ConnectionString, commandType, commandText, parms);
}
#endregion ExecuteNonQuery
#region ExecuteScalar
/// <summary>
/// 执行SQL语句,返回结果集中的第一行第一列
/// </summary>
/// <typeparam name="T">返回对象类型</typeparam>
/// <param name="commandText">SQL语句</param>
/// <param name="parms">查询参数</param>
/// <returns>返回结果集中的第一行第一列</returns>
public T ExecuteScalar<T>(string commandText, params MySqlParameter[] parms)
{
return ExecuteScalar<T>(ConnectionString, commandText, parms);
}
/// <summary>
/// 执行SQL语句,返回结果集中的第一行第一列
/// </summary>
/// <param name="commandText">SQL语句</param>
/// <param name="parms">查询参数</param>
/// <returns>返回结果集中的第一行第一列</returns>
public object ExecuteScalar(string commandText, params MySqlParameter[] parms)
{
return ExecuteScalar(ConnectionString, CommandType.Text, commandText, parms);
}
/// <summary>
/// 执行SQL语句,返回结果集中的第一行第一列
/// </summary>
/// <param name="commandType">命令类型(存储过程,命令文本, 其它.)</param>
/// <param name="commandText">SQL语句或存储过程名称</param>
/// <param name="parms">查询参数</param>
/// <returns>返回结果集中的第一行第一列</returns>
public object ExecuteScalar(CommandType commandType, string commandText, params MySqlParameter[] parms)
{
return ExecuteScalar(ConnectionString, commandType, commandText, parms);
}
#endregion ExecuteScalar
#region ExecuteDataReader
/// <summary>
/// 执行SQL语句,返回只读数据集
/// </summary>
/// <param name="commandText">SQL语句</param>
/// <param name="parms">查询参数</param>
/// <returns>返回只读数据集</returns>
private MySqlDataReader ExecuteDataReader(string commandText, params MySqlParameter[] parms)
{
return ExecuteDataReader(ConnectionString, CommandType.Text, commandText, parms);
}
}
}
MySqlHelper msq = null;
msq = new MySqlHelper("server=123.123.123.123;database=datadb;uid=用户名(远程的话不建议用root);pwd=pass;Charset=utf8");
mysqlhelper的代码太长。 你自己去下一个。另外还要下一个MySql.Data.dll
#6
直连数据库的话要考虑这几点。
1.用户名的权限问题。 自己要管理好。
2.长时间没操作或首次连接 都很慢。注意做异步操作
3.不建议直连。除非是局域网。
ps:mysqlhelper 类没贴完。 自己去找个吧。
1.用户名的权限问题。 自己要管理好。
2.长时间没操作或首次连接 都很慢。注意做异步操作
3.不建议直连。除非是局域网。
ps:mysqlhelper 类没贴完。 自己去找个吧。
#7
谢谢大家的回复,我用SQLite替代mysql一起打包就搞定了