写一个公共类,如下:
创新互联是一家集网站建设,昭阳企业网站建设,昭阳品牌网站建设,网站定制,昭阳网站建设报价,网络营销,网络优化,昭阳网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
import java.sql.*;
public class ConnectDB {
//数据库用户名
String userName="sa";
//数据库密码
String userPassword="123456";
//数据库的URL,包括连接数据库所使用的编码格式
String url="jdbc:sqlserver://localhost:1433;databaseName=stu";
//定义一个连接对象
Connection dbConn;
//错误信息串
String errMes;
public ConnectDB() {
//初始化操作
errMes="";
dbConn=null;
}
//连接数据库
public Connection getConn() {
try {
//声明所用的类包
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//获得数据库的连接对象
dbConn= DriverManager.getConnection(url,userName,userPassword);
} catch(Exception e) {
dbConn = null;
errMes=e.toString();
}
return dbConn;
}
//获取错误信息
public String getErrMes() {
return errMes;
}
}
这个不叫封装,一般叫部署
把开发的web网站部署到web服务器,连接数据库服务器
C#只是一种语言,按楼主的意思是需要一种开发web应用程序的技术就是asp.net,只不过它用的是C#语言
sql也只是数据库查询语言,我们一般选择具体的数据库产品,比如sqlserver
就像我们不会说,我用聊天工具和你联系,而说的是我用QQ和你联系..
这样看你用C# 语言开发的是什么类型的项目了。
1.B/S结构的程序在部署的时候是需要将你的程序放在一个web容器中来运行的例如IIS。然后在部署数据库,微软的数据库允许我们将数据库以文件的形式提取出来存放在项目的某一个文件当中,但是这也是需要一个前提的,就是你部署的这台计算机已经有SQL server 的客户端才可以这样使用。
2.C/S结构的程序不需要web容器的平台可以直接运行在客户的机器上,但是在如果你的程序用到数据库的话还是需要对数据库进步部署的。
如果你想将你的程序和数据捆绑在一起的话可以选择一个比较轻量级的数据库,比如微软的Access 它是附加上office中的,使用它是可以实现程序和数据一起打包的
package com.second.dao;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class JDBCUtilDao {
private static Connection con = null;
private static PreparedStatement ps = null;
private static ResultSet rs = null;
public static Connection PrintCon() {
return con;
}
public static PreparedStatement PrintPs() {
return ps;
}
public static ResultSet PrintRs() {
return rs;
}
/**
* 准备驱动
*/
static {
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("加载驱动失败!");
e.printStackTrace();
}
}
public static Connection getConnection() {
try {
con = DriverManager.getConnection(
"jdbc:jtds:sqlserver://192.168.6.110/sql_second", "sa",
"123");
// System.out.println(con);
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("连接失败!");
e.printStackTrace();
}
return con;
}
/**
* 关闭连接
*
* @param rs
* 结果集对象
* @param ps
* 会话对象
* @param con
* 连接对象
*/
public static void closeAll(ResultSet rs, PreparedStatement ps,
Connection con) {
try {
if (null != rs) {
rs.close();
}
if (null != ps) {
ps.close();
}
if (null != con) {
con.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 设置参数
*
* @param params
* @param ps
*/
public static void setParams(ListString params, PreparedStatement ps) {
if (params != null) {
for (int i = 0; i params.size(); i++) {
try {
ps.setString(i + 1, params.get(i));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/**
* 实现增、删、改
*
* @param sql
* sql语句
* @param params
* 参数
* @return 修改的行数
*/
public static int doUpdata(String sql, ListString params) {
int result = 0;
try {
// 判断是否连接 不连接就把数据库连上
if (null == con || con.isClosed()) {
con = getConnection();
}
// 得到会话
ps = con.prepareStatement(sql);
// 设置参数
setParams(params, ps);
// 得到结果,即改变行数
result = ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
closeAll(null, ps, con);
}
return result;
}
/**
* 查询
*
* @param T
* @param sql
* @param params
* @param t
* @return
*/
public static T ListT qureyAll(String sql, ListString params,
ClassT t) {
// 用一个集合接受返回的数据
ListT list = new ArrayListT();
// 判断是否连接
try {
if (null == con || con.isClosed()) {
con = getConnection();
}
// 操作对象
ps = con.prepareStatement(sql);
// 设置参数
setParams(params, ps);
// 返回结果集
rs = ps.executeQuery();
// 取出t中的说有方法
Method[] method = t.getDeclaredMethods();
// 取出说有列名和列数
ResultSetMetaData rsmd = rs.getMetaData();
// 获得列数
int count = rsmd.getColumnCount();
// 取出每个列列名放入数组中
String[] columns = new String[count];
for (int i = 0; i columns.length; i++) {
columns[i] = rsmd.getColumnName(i + 1);
}
// 循环结果集
while (rs.next()) {
T s = (T) t.newInstance();
// 第一个循环控制列数
for (int i = 0; i columns.length; i++) {
// 第二个循环控制方法名
for (int j = 0; j method.length; j++) {
String setName = "set" + columns[i];
if (setName.equalsIgnoreCase(method[j].getName())) {// set+列名相同就是这个类得方法名
String typeName = rsmd.getColumnTypeName(i + 1);// 得到数据库中列名的类型
// int
// varchar..
//System.out.println(typeName);
if (typeName.equals("INTEGER")
|| typeName.equals("int identity")
|| typeName.equals("int")) {
method[j].invoke(s, rs.getInt(columns[i]));
} else if (typeName.equals("DECIMAL")) {
method[j].invoke(s, rs.getDouble(columns[i]));
} else if (typeName.equals("VARCHAR2")) {
method[j].invoke(s, rs.getString(columns[i]));
} else if (typeName.equals("money")) {
method[j].invoke(s, rs.getFloat(columns[i]));
} else if (typeName.equals("datetime")) {
// System.out.println(rs.getTimestamp(columns[i]));
method[j]
.invoke(s, rs.getTimestamp(columns[i]));
} else {
method[j].invoke(s, rs.getString(columns[i]));
}
}
}
}
list.add(s);
}
closeAll(rs, ps, con);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
/**
* 查询
*
* @param sql
* @param obj
* @return
*/
public static ResultSet getInfoos(String sql, Object[] temp) {
ResultSet rs = null;
try {
if (con == null || con.isClosed()) {
getConnection();
}
ps = con.prepareStatement(sql);
for (int i = 1; i temp.length; i++) {
ps.setObject(i, temp[i]);
}
rs = ps.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
public static void main(String[] args) {
// JDBCUtilDemo jd = new JDBCUtilDemo();
// System.out.println(jd.getConnection());
// if(jd.updateByUserId("8888" )){
// System.out.println("OK");
// }else{
// System.out.println("NO");
// }
}
}
这是以前写的一个类,你看看有帮助不
try{
class.forName(driver);
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
错了,应该写在方法里面。。。
public Connection getConnection()
{
try{
class.forName(driver);
connection = DriverManager.getConnection(URL,username,password);
}
catch (SQLException e1)
{
e1.printStackTrace();
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
return connection;
}
或者把他放在构造方法里。
当然是:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
编译肯定不对。